diff --git a/README.md b/README.md
index 6e59286..cfe7cb1 100644
--- a/README.md
+++ b/README.md
@@ -1,27 +1,52 @@
# AKAP
-The AKA protocol is somewhat like LDAP for Ethereum. It allows you to
-reference content and data, and also navigate structures in the context
-of nodes and a directed acyclic graph.
+The [AKA protocol](https://akap.me) (AKAP) is an idea, a specification, and a set of smart contracts written for the Ethereum blockchain. It tackles a challenge seen on blockchains related to immutability and how you write code to handle such an environment.
-The contract is deployed and is ready for use, see below for details.
+In short the challenge facing blockchain developers is that when they deploy code others depend on, there's no easy upgrade path. The location of the code is tied in with the location of storage, and if you want to upgrade your code you can't easily take this storage with you. Deploying a new version would force everyone who depend on it to change their references, not to mention the pain of repopulating existing data.
-Please have a read of the [white paper](WHITEPAPER.md).
+Eternal storage is a pattern that AKAP can help you leverage, where the idea is to keep your storage separate from your code.
-## Truffle commands
+Please see the [documentation](https://akap.me/docs) for more in depth material.
+
+## Repositories
+
+This repository contains the AKAP and AKAF registry contracts. Other related repositories:
+
+[AKAP utils](https://github.com/cfelde/AKAP-utils)
+[AKAP docs](https://github.com/cfelde/AKAP-docs)
+[AKAP browser](https://github.com/cfelde/AKAP-browser)
+[Using AKAP](https://github.com/cfelde/Using-AKAP)
+
+## Building locally with Truffle
Assuming you have [Truffle](https://www.trufflesuite.com/) installed
you can run the usual commands:
+`git clone https://github.com/cfelde/AKAP.git`
+
+`cd AKAP`
+
`truffle build`
`truffle test`
You might need to do:
- `npm install @openzeppelin/contracts`
+`npm install @openzeppelin/contracts`
- `npm install @openzeppelin/test-helpers`
+`npm install @openzeppelin/test-helpers`
+
+## Using as a library
+
+To use this as a library in your Solidity code, install with npm first:
+
+`npm install akap`
+
+If you need a local testnet instance of AKAP do:
+
+`truffle deploy --network development`
+
+You can find an example with further details on https://github.com/cfelde/Using-AKAP
## Official build
@@ -48,6 +73,13 @@ macOS Catalina v10.15.2
The solc optimizer was enabled with runs = 200.
-## AKAP UI
+## AKAP UI and apps
+
+There's a browser available on [akap.me/browser](https://akap.me/browser), and you can find the repo for this [here](https://github.com/cfelde/AKAP-browser).
+Also, if you want to see how you can get started using AKAP in your web apps, there's a simple [deploy test](https://github.com/cfelde/AKAP-deploy-test) example available.
+
+We're building a list of apps and similar using AKAP. If you have some examples to share, please do.
+
+[Redir.eth URL shortener](https://redir.eth), with [source code](https://github.com/mohamedelshami/AKAP-url-shortener).
-There's a browser available on [akap.me/browser](https://akap.me/browser), and you can find the repo for this [here](https://github.com/cfelde/AKAP-browser).
\ No newline at end of file
+[The Million DAI Website](https://milliondai.website)
\ No newline at end of file
diff --git a/build/contracts/AKAF.json b/build/contracts/AKAF.json
new file mode 100644
index 0000000..fa13117
--- /dev/null
+++ b/build/contracts/AKAF.json
@@ -0,0 +1,16108 @@
+{
+ "contractName": "AKAF",
+ "abi": [
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "approved",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "operator",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "approved",
+ "type": "bool"
+ }
+ ],
+ "name": "ApprovalForAll",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "enum IAKAP.NodeAttribute",
+ "name": "attribute",
+ "type": "uint8"
+ }
+ ],
+ "name": "AttributeChanged",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "parentId",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "label",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "enum IAKAP.ClaimCase",
+ "name": "claimCase",
+ "type": "uint8"
+ }
+ ],
+ "name": "Claim",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "getApproved",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "operator",
+ "type": "address"
+ }
+ ],
+ "name": "isApprovedForAll",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "ownerOf",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "safeTransferFrom",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "_data",
+ "type": "bytes"
+ }
+ ],
+ "name": "safeTransferFrom",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "approved",
+ "type": "bool"
+ }
+ ],
+ "name": "setApprovalForAll",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes4",
+ "name": "interfaceId",
+ "type": "bytes4"
+ }
+ ],
+ "name": "supportsInterface",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "index",
+ "type": "uint256"
+ }
+ ],
+ "name": "tokenByIndex",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "index",
+ "type": "uint256"
+ }
+ ],
+ "name": "tokenOfOwnerByIndex",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "tokenURI",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "parentId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "label",
+ "type": "bytes"
+ }
+ ],
+ "name": "hashOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "parentId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "label",
+ "type": "bytes"
+ }
+ ],
+ "name": "claim",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "status",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ }
+ ],
+ "name": "exists",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ }
+ ],
+ "name": "isApprovedOrOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ }
+ ],
+ "name": "parentOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ }
+ ],
+ "name": "expiryOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ }
+ ],
+ "name": "seeAlso",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ }
+ ],
+ "name": "seeAddress",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ }
+ ],
+ "name": "nodeBody",
+ "outputs": [
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ }
+ ],
+ "name": "expireNode",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "setSeeAlso",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "value",
+ "type": "address"
+ }
+ ],
+ "name": "setSeeAddress",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "value",
+ "type": "bytes"
+ }
+ ],
+ "name": "setNodeBody",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "nodeId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "uri",
+ "type": "string"
+ }
+ ],
+ "name": "setTokenURI",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum IAKAP.NodeAttribute\",\"name\":\"attribute\",\"type\":\"uint8\"}],\"name\":\"AttributeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"enum IAKAP.ClaimCase\",\"name\":\"claimCase\",\"type\":\"uint8\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"parentId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"expireNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"expiryOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"parentId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"}],\"name\":\"hashOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"isApprovedOrOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"nodeBody\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"parentOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"seeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"seeAlso\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setNodeBody\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"setSeeAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setSeeAlso\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"approve(address,uint256)\":{\"details\":\"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.\",\"params\":{\"to\":\"address to be approved for the given token ID\",\"tokenId\":\"uint256 ID of the token to be approved\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"address to query the balance of\"},\"return\":\"uint256 representing the amount owned by the passed address\"},\"getApproved(uint256)\":{\"details\":\"Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query the approval of\"},\"return\":\"address currently approved for the given token ID\"},\"isApprovedForAll(address,address)\":{\"details\":\"Tells whether an operator is approved by a given owner.\",\"params\":{\"operator\":\"operator address which you want to query the approval of\",\"owner\":\"owner address which you want to query the approval of\"},\"return\":\"bool whether the given operator is approved by the given owner\"},\"name()\":{\"details\":\"Gets the token name.\",\"return\":\"string representing the token name\"},\"ownerOf(uint256)\":{\"details\":\"Gets the owner of the specified token ID.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query the owner of\"},\"return\":\"address currently marked as the owner of the given token ID\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"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\",\"params\":{\"from\":\"current owner of the token\",\"to\":\"address to receive the ownership of the given token ID\",\"tokenId\":\"uint256 ID of the token to be transferred\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"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\",\"params\":{\"_data\":\"bytes data to send along with a safe transfer check\",\"from\":\"current owner of the token\",\"to\":\"address to receive the ownership of the given token ID\",\"tokenId\":\"uint256 ID of the token to be transferred\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf.\",\"params\":{\"approved\":\"representing the status of the approval to be set\",\"to\":\"operator address to set the approval\"}},\"supportsInterface(bytes4)\":{\"details\":\"See `IERC165.supportsInterface`. * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Gets the token symbol.\",\"return\":\"string representing the token symbol\"},\"tokenByIndex(uint256)\":{\"details\":\"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.\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the tokens list\"},\"return\":\"uint256 token ID at the given index of the tokens list\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Gets the token ID at a given index of the tokens list of the requested owner.\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the requested tokens list\",\"owner\":\"address owning the tokens list to be accessed\"},\"return\":\"uint256 token ID at the given index of the tokens list owned by the requested address\"},\"tokenURI(uint256)\":{\"details\":\"Returns an URI for a given token ID. Throws if the token ID does not exist. May return an empty string.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query\"}},\"totalSupply()\":{\"details\":\"Gets the total amount of tokens stored by the contract.\",\"return\":\"uint256 representing the total amount of tokens\"},\"transferFrom(address,address,uint256)\":{\"details\":\"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.\",\"params\":{\"from\":\"current owner of the token\",\"to\":\"address to receive the ownership of the given token ID\",\"tokenId\":\"uint256 ID of the token to be transferred\"}}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/private/tmp/eth/akap/contracts/AKAF.sol\":\"AKAF\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/private/tmp/eth/akap/contracts/AKAF.sol\":{\"keccak256\":\"0xf2978e2729083e110ff4c9ec5bb29d7f0c45b1ce55976b85f313fbf8a50b1109\",\"urls\":[\"bzz-raw://846fe8dcf2e6507135b593c2bebd704e94fe1c111365f870e63475d7ac85952e\",\"dweb:/ipfs/QmXMLimLgj7ou43rsQAYEzw69KZkE2gHRLybfhk5qX3Kc6\"]},\"/private/tmp/eth/akap/contracts/IAKAP.sol\":{\"keccak256\":\"0x2163f1519406e467ca39601ce7dfed73d104b3da8bdd0146bd6ca2d14388276a\",\"urls\":[\"bzz-raw://2e4395653541d8e0a6a5bad617a3b7af3efcd8fdea988edf4c7644aabbb8e6b0\",\"dweb:/ipfs/QmPDi6uqVTLCp1v725r2qfC5GNsiGCwbMCpZWSjc34u1Ek\"]},\"@openzeppelin/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x5eb69360d3441ab2ee799bd7c007cccbffb0896f12b2dfe1456193e2aa180a11\",\"urls\":[\"bzz-raw://072e8b5a1b5acfc2acba9b6fb87d1dc57065aad44572617ad46b014074969eb3\",\"dweb:/ipfs/QmVTDHUriaxBJqiWCWgWC8vYaYYfXSz883LsowzTx1DcpK\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzz-raw://8bdbefb642e7b08535c66bbf074e576cfef2300cdf910c1e0b211f6393833a28\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzz-raw://b40442c5b350b57b88a081a1eacd2bac962d4ecc1f029f5447a18986f08f6f14\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xd1804d04fb39689453f673601429a99a0c68c422a981fc338773df9a59180fe9\",\"urls\":[\"bzz-raw://1b9307920e0378d58c6677f8952ad090a9ecb30e878835e301a0d18386a870c1\",\"dweb:/ipfs/QmYYixTDVF4FXqFpYzEcufAwEY9BFBJ33Ew9ncsGvD7btC\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf151df411bbf4eaef1fc8e8480cd10c2cd985f1a36517e63981517610213efc1\",\"urls\":[\"bzz-raw://2a277b3cc3a1a03af5c039bc75cd16bb2d23b529cb2564cc0bea1b1e0eb4dd68\",\"dweb:/ipfs/QmNRxggY8qmjjuLnxggRqE8uBueuCktLwi9YYHagWoaEJ8\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Enumerable.sol\":{\"keccak256\":\"0xb42cb5a7471d98114af8f7050e7d08dfd543f432713a8aee72a45ce9485f5bed\",\"urls\":[\"bzz-raw://324b8d35f37d91fd863130a6e4b83d55b8b95264af011a008ec03e084ac91b75\",\"dweb:/ipfs/QmWY61QSSJPkgDb2WZR1unTfuSrd5jBp2tC7RrCrQxC9CL\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Full.sol\":{\"keccak256\":\"0x908d0d6fd8d30cffb1fe9fce1f7db6802cb885fbe88d2f170539e8dcc6afa946\",\"urls\":[\"bzz-raw://ed5f7883e2a50b3efeaae764c77152bef9d3d9965832ef095c94e79c2e887257\",\"dweb:/ipfs/QmaLRQ1ziLAo18gvM2EbKhvHC3ys4333mTxCFfoEJ8AodY\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Metadata.sol\":{\"keccak256\":\"0xe5e28b1a405164faa98f8ecd8ed2b00907b89e3d58b2b2bb8ac8b12bc5714489\",\"urls\":[\"bzz-raw://0d5d3f0caa7e7ec91f8a2894e1a6a3513a0c79aa91a498ebf8fdbdd07c12286f\",\"dweb:/ipfs/QmP7r4jQMRxXb5JHy5V9bgMz5FmTezcSDd7ivyzJN88pTR\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xce48937a8007c580b8e2e35705738c922dd17540de89ebee6df06d2917a3f9fc\",\"urls\":[\"bzz-raw://1d117265103ee3efcd454d3aafb3e79a115f9bca6dec78a1229558eb30d14d05\",\"dweb:/ipfs/QmTm5Z1c7zzPiG3Cfj1eBMB23AeiEFGgvmTFQVaeEWXVCw\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x5c573acd6c7b98d71f3c1c44d63dc17400b0fd7b26a52c9fded43b8b533dc4ec\",\"urls\":[\"bzz-raw://e23af54444d2dbfae58895339eb7b189e1ba5d0b7abde63716e7ef7da23b2fde\",\"dweb:/ipfs/QmZva7dE1SMd1yyizzc6ivSoBXXwpNveLV7iFNATNpq68Y\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0x2b2b99dc7fe8fcd1f9427d00822b99cbc683dc21f5dd7532bd7e2281fd2c2ca2\",\"urls\":[\"bzz-raw://a8024c00e34efaf328f9592e76823c79f25fa0f6006bdf4a1e7fea204afd4773\",\"dweb:/ipfs/QmZns9jTr7843njq3J2iL2LLoWXK5mdzN1bDGd9GL3ahhD\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xadbfb7028fb0f851dc848a48b9e54e7c89ffd2c2edc12fa4ba9bb383dfaa83d9\",\"urls\":[\"bzz-raw://90dceab42713246639100b87d6650037d68e4a2ab2dd4b5768c3ed35d6b3a4a0\",\"dweb:/ipfs/QmQ42UW5nchMoYP9bU9F1AJga5chG8j92fCPkURpiDKsCu\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}",
+ "bytecode": "0x60806040523480156200001157600080fd5b50604080518082018252601481527f414b4120466f72657665722052656769737472790000000000000000000000006020808301919091528251808401909352600483526320a5a0a360e11b908301529081816200007f6301ffc9a760e01b6001600160e01b03620001c316565b6200009a6380ac58cd60e01b6001600160e01b03620001c316565b620000b563780e9d6360e01b6001600160e01b03620001c316565b8151620000ca90600990602085019062000482565b508051620000e090600a90602084019062000482565b50620000fc635b5e139f60e01b6001600160e01b03620001c316565b50600092506200012c91506200011c90506001600160e01b036200024816565b826001600160e01b036200024d16565b6000818152600c602052604090206000196001909101558080620001586001600160e01b036200024816565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e600160405180806020018360028111156200019957fe5b60ff1681526020018281038252600081526020016020019250505060405180910390a45062000524565b6001600160e01b0319808216141562000223576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b335b90565b6200026482826200029160201b62001ff21760201c565b6200027982826001600160e01b03620003da16565b6200028d816001600160e01b036200041816565b5050565b6001600160a01b038216620002ed576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b62000301816001600160e01b036200045c16565b1562000354576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600382529091206200039e9162000479811b620021c117901c565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b6000908152600160205260409020546001600160a01b0316151590565b80546001019055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004c557805160ff1916838001178555620004f5565b82800160010185558215620004f5579182015b82811115620004f5578251825591602001919060010190620004d8565b506200050392915062000507565b5090565b6200024a91905b808211156200050357600081556001016200050e565b61266180620005346000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063631fb72611610104578063b0690124116100a2578063c87b56dd11610071578063c87b56dd14610783578063cfa3c132146107a0578063e741cc4e146107bd578063e985e9c514610868576101da565b8063b069012414610610578063b88d4fde14610685578063b8af764214610749578063baef73e914610766576101da565b80637352f2b4116100de5780637352f2b41461059a5780638b73061f146105b757806395d89b41146105da578063a22cb465146105e2576101da565b8063631fb7261461053a5780636352211e1461055757806370a0823114610574576101da565b806323b872dd1161017c5780633a76c3021161014b5780633a76c3021461049e57806342842e0e146104ca5780634f558e79146105005780634f6ccce71461051d576101da565b806323b872dd146103aa5780632f745c59146103e0578063380a284c1461040c57806338926b6d14610429576101da565b8063095ea7b3116101b8578063095ea7b3146102d05780630d340c4a146102fe578063162094c41461031b57806318160ddd14610390576101da565b806301ffc9a7146101df57806306fdde031461021a578063081812fc14610297575b600080fd5b610206600480360360208110156101f557600080fd5b50356001600160e01b031916610896565b604080519115158252519081900360200190f35b6102226108b5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025c578181015183820152602001610244565b50505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b4600480360360208110156102ad57600080fd5b503561094c565b604080516001600160a01b039092168252519081900360200190f35b6102fc600480360360408110156102e657600080fd5b506001600160a01b0381351690602001356109ae565b005b6102fc6004803603602081101561031457600080fd5b5035610abf565b6102fc6004803603604081101561033157600080fd5b81359190810190604081016020820135600160201b81111561035257600080fd5b82018360208201111561036457600080fd5b803590602001918460018302840111600160201b8311171561038557600080fd5b509092509050610b87565b610398610c76565b60408051918252519081900360200190f35b6102fc600480360360608110156103c057600080fd5b506001600160a01b03813581169160208101359091169060400135610c7c565b610398600480360360408110156103f657600080fd5b506001600160a01b038135169060200135610cd1565b6102226004803603602081101561042257600080fd5b5035610d50565b6103986004803603604081101561043f57600080fd5b81359190810190604081016020820135600160201b81111561046057600080fd5b82018360208201111561047257600080fd5b803590602001918460018302840111600160201b8311171561049357600080fd5b509092509050610e46565b6102fc600480360360408110156104b457600080fd5b50803590602001356001600160a01b0316611207565b6102fc600480360360608110156104e057600080fd5b506001600160a01b038135811691602081013590911690604001356112df565b6102066004803603602081101561051657600080fd5b50356112fa565b6103986004803603602081101561053357600080fd5b5035611317565b6102066004803603602081101561055057600080fd5b503561137d565b6102b46004803603602081101561056d57600080fd5b5035611390565b6103986004803603602081101561058a57600080fd5b50356001600160a01b03166113e4565b610398600480360360208110156105b057600080fd5b503561144c565b6102fc600480360360408110156105cd57600080fd5b50803590602001356114b6565b610222611560565b6102fc600480360360408110156105f857600080fd5b506001600160a01b03813516906020013515156115c1565b6102fc6004803603604081101561062657600080fd5b81359190810190604081016020820135600160201b81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111600160201b8311171561067a57600080fd5b50909250905061168d565b6102fc6004803603608081101561069b57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156106d557600080fd5b8201836020820111156106e757600080fd5b803590602001918460018302840111600160201b8311171561070857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611740945050505050565b6102b46004803603602081101561075f57600080fd5b5035611798565b6103986004803603602081101561077c57600080fd5b503561180b565b6102226004803603602081101561079957600080fd5b5035611875565b610398600480360360208110156107b657600080fd5b503561195a565b610398600480360360408110156107d357600080fd5b81359190810190604081016020820135600160201b8111156107f457600080fd5b82018360208201111561080657600080fd5b803590602001918460018302840111600160201b8311171561082757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506119c1945050505050565b6102066004803603604081101561087e57600080fd5b506001600160a01b0381358116916020013516611ab6565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109415780601f1061091657610100808354040283529160200191610941565b820191906000526020600020905b81548152906001019060200180831161092457829003601f168201915b505050505090505b90565b600061095782611ae4565b6109925760405162461bcd60e51b815260040180806020018281038252602c8152602001806124b6602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006109b982611390565b9050806001600160a01b0316836001600160a01b03161415610a0c5760405162461bcd60e51b81526004018080602001828103825260218152602001806125af6021913960400191505060405180910390fd5b336001600160a01b0382161480610a285750610a288133611ab6565b610a635760405162461bcd60e51b815260040180806020018281038252603881526020018061242b6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b80610ac981611ae4565b8015610ae15750610ae1610adb611b01565b82611b05565b8015610aed5750600081115b610b285760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000828152600c602052604090204260019091015581610b46611b01565b6001600160a01b0316600080516020612537833981519152600060405180826004811115610b7057fe5b60ff16815260200191505060405180910390a35050565b82610b9181611ae4565b8015610ba35750610ba3610adb611b01565b8015610baf5750600081115b610bea5760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b610c2a8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ba192505050565b83610c33611b01565b6001600160a01b0316600080516020612537833981519152600460405180826004811115610c5d57fe5b60ff16815260200191505060405180910390a350505050565b60075490565b610c863382611b05565b610cc15760405162461bcd60e51b81526004018080602001828103825260318152602001806125d06031913960400191505060405180910390fd5b610ccc838383611c04565b505050565b6000610cdc836113e4565b8210610d195760405162461bcd60e51b815260040180806020018281038252602b81526020018061234e602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610d3d57fe5b9060005260206000200154905092915050565b606081610d5c81611ae4565b8015610d685750600081115b610da35760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b6000838152600c602090815260409182902060040180548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610e395780601f10610e0e57610100808354040283529160200191610e39565b820191906000526020600020905b815481529060010190602001808311610e1c57829003601f168201915b5050505050915050919050565b600080610e898585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119c192505050565b90506000610e9e610e98611b01565b87611b05565b90506000610eab83611ae4565b9050808015610ec65750610ec6610ec0611b01565b84611b05565b15610fd6576000838152600c60205260409020548714610f29576040805162461bcd60e51b81526020600482015260196024820152780829682a0744092dcecc2d8d2c840e0c2e4cadce840d0c2e6d603b1b604482015290519081900360640190fd5b6000838152600c602052604090206000196001909101558683610f4a611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e898960006040518080602001836002811115610f8c57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460019350505050611200565b80158015610fe15750815b156110a757610ff7610ff1611b01565b84611c23565b6000838152600c60205260409020878155600019600190910155868361101b611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e89896001604051808060200183600281111561105d57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460029350505050611200565b8080156110c557506000838152600c60205260409020600101544210155b80156110ce5750815b156111f8576000838152600c60205260409020548714611131576040805162461bcd60e51b81526020600482015260196024820152780829682a0744092dcecc2d8d2c840e0c2e4cadce840d0c2e6d603b1b604482015290519081900360640190fd5b61114b61113d84611390565b611145611b01565b85611c04565b6000838152600c60205260409020600019600190910155868361116c611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e8989600260405180806020018360028111156111ae57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460039350505050611200565b600093505050505b9392505050565b8161121181611ae4565b80156112235750611223610adb611b01565b801561122f5750600081115b61126a5760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000838152600c6020526040902060030180546001600160a01b0319166001600160a01b0384161790558261129d611b01565b6001600160a01b03166000805160206125378339815191526002604051808260048111156112c757fe5b60ff16815260200191505060405180910390a3505050565b610ccc83838360405180602001604052806000815250611740565b600061130582611ae4565b80156113115750600082115b92915050565b6000611321610c76565b821061135e5760405162461bcd60e51b815260040180806020018281038252602c815260200180612601602c913960400191505060405180910390fd5b6007828154811061136b57fe5b90600052602060002001549050919050565b600061131161138a611b01565b83611b05565b6000818152600160205260408120546001600160a01b0316806113115760405162461bcd60e51b815260040180806020018281038252602981526020018061248d6029913960400191505060405180910390fd5b60006001600160a01b03821661142b5760405162461bcd60e51b815260040180806020018281038252602a815260200180612463602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061131190611c44565b60008161145881611ae4565b80156114645750600081115b61149f5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090206002015490565b816114c081611ae4565b80156114d257506114d2610adb611b01565b80156114de5750600081115b6115195760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000838152600c6020526040902060020182905582611536611b01565b6001600160a01b03166000805160206125378339815191526001604051808260048111156112c757fe5b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109415780601f1061091657610100808354040283529160200191610941565b6001600160a01b03821633141561161f576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b8261169781611ae4565b80156116a957506116a9610adb611b01565b80156116b55750600081115b6116f05760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000848152600c6020526040902061170c906004018484612227565b5083611716611b01565b6001600160a01b0316600080516020612537833981519152600360405180826004811115610c5d57fe5b61174b848484610c7c565b61175784848484611c48565b6117925760405162461bcd60e51b81526004018080602001828103825260328152602001806123796032913960400191505060405180910390fd5b50505050565b6000816117a481611ae4565b80156117b05750600081115b6117eb5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c60205260409020600301546001600160a01b031690565b60008161181781611ae4565b80156118235750600081115b61185e5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090206001015490565b606061188082611ae4565b6118bb5760405162461bcd60e51b815260040180806020018281038252602f815260200180612557602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452909183018282801561194e5780601f106119235761010080835404028352916020019161194e565b820191906000526020600020905b81548152906001019060200180831161193157829003601f168201915b50505050509050919050565b60008161196681611ae4565b80156119725750600081115b6119ad5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090205490565b600060018251101580156119d757506020825111155b611a28576040805162461bcd60e51b815260206004820152601a60248201527f414b41503a20496e76616c6964206c6162656c206c656e677468000000000000604482015290519081900360640190fd5b8151602080840191909120604080518084018790528082018390528151808203830181526060909101909152805192019190912080611aae576040805162461bcd60e51b815260206004820152601760248201527f414b41503a20496e76616c6964206e6f64652068617368000000000000000000604482015290519081900360640190fd5b949350505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b3390565b6000611b1082611ae4565b611b4b5760405162461bcd60e51b815260040180806020018281038252602c8152602001806123ff602c913960400191505060405180910390fd5b6000611b5683611390565b9050806001600160a01b0316846001600160a01b03161480611b915750836001600160a01b0316611b868461094c565b6001600160a01b0316145b80611aae5750611aae8185611ab6565b611baa82611ae4565b611be55760405162461bcd60e51b815260040180806020018281038252602c8152602001806124e2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610ccc928401906122a5565b611c0f838383611d7b565b611c198382611ebf565b610ccc8282611fb4565b611c2d8282611ff2565b611c378282611fb4565b611c4081612123565b5050565b5490565b6000611c5c846001600160a01b0316612167565b611c6857506001611aae565b604051630a85bd0160e11b815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015611ce2578181015183820152602001611cca565b50505050905090810190601f168015611d0f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b505050506040513d6020811015611d5b57600080fd5b50516001600160e01b031916630a85bd0160e11b14915050949350505050565b826001600160a01b0316611d8e82611390565b6001600160a01b031614611dd35760405162461bcd60e51b815260040180806020018281038252602981526020018061250e6029913960400191505060405180910390fd5b6001600160a01b038216611e185760405162461bcd60e51b81526004018080602001828103825260248152602001806123db6024913960400191505060405180910390fd5b611e218161216d565b6001600160a01b0383166000908152600360205260409020611e42906121aa565b6001600160a01b0382166000908152600360205260409020611e63906121c1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054611ee990600163ffffffff6121ca16565b600083815260066020526040902054909150808214611f84576001600160a01b0384166000908152600560205260408120805484908110611f2657fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110611f6457fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611fad906000198301612313565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6001600160a01b03821661204d576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61205681611ae4565b156120a8576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600390915290206120e7906121c1565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b3b151590565b6000818152600260205260409020546001600160a01b0316156121a757600081815260026020526040902080546001600160a01b03191690555b50565b80546121bd90600163ffffffff6121ca16565b9055565b80546001019055565b600082821115612221576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122685782800160ff19823516178555612295565b82800160010185558215612295579182015b8281111561229557823582559160200191906001019061227a565b506122a1929150612333565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122e657805160ff1916838001178555612295565b82800160010185558215612295579182015b828111156122955782518255916020019190600101906122f8565b815481835581811115610ccc57600083815260209020610ccc9181019083015b61094991905b808211156122a1576000815560010161233956fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572414b41503a207365742076616c75652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4e643f23cbc202af4f83dce574290af81b7d940546736d83eec38524c05908f84552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e414b41503a206f70657261746f7220717565727920666f72206e6f6e6578697374656e74206e6f64654552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a265627a7a72315820fad6b581bcdb67eb97ac3e02062c4c98693ea66a316c8b2acf1207be83e0b82064736f6c63430005100032",
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c8063631fb72611610104578063b0690124116100a2578063c87b56dd11610071578063c87b56dd14610783578063cfa3c132146107a0578063e741cc4e146107bd578063e985e9c514610868576101da565b8063b069012414610610578063b88d4fde14610685578063b8af764214610749578063baef73e914610766576101da565b80637352f2b4116100de5780637352f2b41461059a5780638b73061f146105b757806395d89b41146105da578063a22cb465146105e2576101da565b8063631fb7261461053a5780636352211e1461055757806370a0823114610574576101da565b806323b872dd1161017c5780633a76c3021161014b5780633a76c3021461049e57806342842e0e146104ca5780634f558e79146105005780634f6ccce71461051d576101da565b806323b872dd146103aa5780632f745c59146103e0578063380a284c1461040c57806338926b6d14610429576101da565b8063095ea7b3116101b8578063095ea7b3146102d05780630d340c4a146102fe578063162094c41461031b57806318160ddd14610390576101da565b806301ffc9a7146101df57806306fdde031461021a578063081812fc14610297575b600080fd5b610206600480360360208110156101f557600080fd5b50356001600160e01b031916610896565b604080519115158252519081900360200190f35b6102226108b5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025c578181015183820152602001610244565b50505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b4600480360360208110156102ad57600080fd5b503561094c565b604080516001600160a01b039092168252519081900360200190f35b6102fc600480360360408110156102e657600080fd5b506001600160a01b0381351690602001356109ae565b005b6102fc6004803603602081101561031457600080fd5b5035610abf565b6102fc6004803603604081101561033157600080fd5b81359190810190604081016020820135600160201b81111561035257600080fd5b82018360208201111561036457600080fd5b803590602001918460018302840111600160201b8311171561038557600080fd5b509092509050610b87565b610398610c76565b60408051918252519081900360200190f35b6102fc600480360360608110156103c057600080fd5b506001600160a01b03813581169160208101359091169060400135610c7c565b610398600480360360408110156103f657600080fd5b506001600160a01b038135169060200135610cd1565b6102226004803603602081101561042257600080fd5b5035610d50565b6103986004803603604081101561043f57600080fd5b81359190810190604081016020820135600160201b81111561046057600080fd5b82018360208201111561047257600080fd5b803590602001918460018302840111600160201b8311171561049357600080fd5b509092509050610e46565b6102fc600480360360408110156104b457600080fd5b50803590602001356001600160a01b0316611207565b6102fc600480360360608110156104e057600080fd5b506001600160a01b038135811691602081013590911690604001356112df565b6102066004803603602081101561051657600080fd5b50356112fa565b6103986004803603602081101561053357600080fd5b5035611317565b6102066004803603602081101561055057600080fd5b503561137d565b6102b46004803603602081101561056d57600080fd5b5035611390565b6103986004803603602081101561058a57600080fd5b50356001600160a01b03166113e4565b610398600480360360208110156105b057600080fd5b503561144c565b6102fc600480360360408110156105cd57600080fd5b50803590602001356114b6565b610222611560565b6102fc600480360360408110156105f857600080fd5b506001600160a01b03813516906020013515156115c1565b6102fc6004803603604081101561062657600080fd5b81359190810190604081016020820135600160201b81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111600160201b8311171561067a57600080fd5b50909250905061168d565b6102fc6004803603608081101561069b57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156106d557600080fd5b8201836020820111156106e757600080fd5b803590602001918460018302840111600160201b8311171561070857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611740945050505050565b6102b46004803603602081101561075f57600080fd5b5035611798565b6103986004803603602081101561077c57600080fd5b503561180b565b6102226004803603602081101561079957600080fd5b5035611875565b610398600480360360208110156107b657600080fd5b503561195a565b610398600480360360408110156107d357600080fd5b81359190810190604081016020820135600160201b8111156107f457600080fd5b82018360208201111561080657600080fd5b803590602001918460018302840111600160201b8311171561082757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506119c1945050505050565b6102066004803603604081101561087e57600080fd5b506001600160a01b0381358116916020013516611ab6565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109415780601f1061091657610100808354040283529160200191610941565b820191906000526020600020905b81548152906001019060200180831161092457829003601f168201915b505050505090505b90565b600061095782611ae4565b6109925760405162461bcd60e51b815260040180806020018281038252602c8152602001806124b6602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006109b982611390565b9050806001600160a01b0316836001600160a01b03161415610a0c5760405162461bcd60e51b81526004018080602001828103825260218152602001806125af6021913960400191505060405180910390fd5b336001600160a01b0382161480610a285750610a288133611ab6565b610a635760405162461bcd60e51b815260040180806020018281038252603881526020018061242b6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b80610ac981611ae4565b8015610ae15750610ae1610adb611b01565b82611b05565b8015610aed5750600081115b610b285760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000828152600c602052604090204260019091015581610b46611b01565b6001600160a01b0316600080516020612537833981519152600060405180826004811115610b7057fe5b60ff16815260200191505060405180910390a35050565b82610b9181611ae4565b8015610ba35750610ba3610adb611b01565b8015610baf5750600081115b610bea5760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b610c2a8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ba192505050565b83610c33611b01565b6001600160a01b0316600080516020612537833981519152600460405180826004811115610c5d57fe5b60ff16815260200191505060405180910390a350505050565b60075490565b610c863382611b05565b610cc15760405162461bcd60e51b81526004018080602001828103825260318152602001806125d06031913960400191505060405180910390fd5b610ccc838383611c04565b505050565b6000610cdc836113e4565b8210610d195760405162461bcd60e51b815260040180806020018281038252602b81526020018061234e602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610d3d57fe5b9060005260206000200154905092915050565b606081610d5c81611ae4565b8015610d685750600081115b610da35760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b6000838152600c602090815260409182902060040180548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610e395780601f10610e0e57610100808354040283529160200191610e39565b820191906000526020600020905b815481529060010190602001808311610e1c57829003601f168201915b5050505050915050919050565b600080610e898585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119c192505050565b90506000610e9e610e98611b01565b87611b05565b90506000610eab83611ae4565b9050808015610ec65750610ec6610ec0611b01565b84611b05565b15610fd6576000838152600c60205260409020548714610f29576040805162461bcd60e51b81526020600482015260196024820152780829682a0744092dcecc2d8d2c840e0c2e4cadce840d0c2e6d603b1b604482015290519081900360640190fd5b6000838152600c602052604090206000196001909101558683610f4a611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e898960006040518080602001836002811115610f8c57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460019350505050611200565b80158015610fe15750815b156110a757610ff7610ff1611b01565b84611c23565b6000838152600c60205260409020878155600019600190910155868361101b611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e89896001604051808060200183600281111561105d57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460029350505050611200565b8080156110c557506000838152600c60205260409020600101544210155b80156110ce5750815b156111f8576000838152600c60205260409020548714611131576040805162461bcd60e51b81526020600482015260196024820152780829682a0744092dcecc2d8d2c840e0c2e4cadce840d0c2e6d603b1b604482015290519081900360640190fd5b61114b61113d84611390565b611145611b01565b85611c04565b6000838152600c60205260409020600019600190910155868361116c611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e8989600260405180806020018360028111156111ae57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460039350505050611200565b600093505050505b9392505050565b8161121181611ae4565b80156112235750611223610adb611b01565b801561122f5750600081115b61126a5760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000838152600c6020526040902060030180546001600160a01b0319166001600160a01b0384161790558261129d611b01565b6001600160a01b03166000805160206125378339815191526002604051808260048111156112c757fe5b60ff16815260200191505060405180910390a3505050565b610ccc83838360405180602001604052806000815250611740565b600061130582611ae4565b80156113115750600082115b92915050565b6000611321610c76565b821061135e5760405162461bcd60e51b815260040180806020018281038252602c815260200180612601602c913960400191505060405180910390fd5b6007828154811061136b57fe5b90600052602060002001549050919050565b600061131161138a611b01565b83611b05565b6000818152600160205260408120546001600160a01b0316806113115760405162461bcd60e51b815260040180806020018281038252602981526020018061248d6029913960400191505060405180910390fd5b60006001600160a01b03821661142b5760405162461bcd60e51b815260040180806020018281038252602a815260200180612463602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061131190611c44565b60008161145881611ae4565b80156114645750600081115b61149f5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090206002015490565b816114c081611ae4565b80156114d257506114d2610adb611b01565b80156114de5750600081115b6115195760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000838152600c6020526040902060020182905582611536611b01565b6001600160a01b03166000805160206125378339815191526001604051808260048111156112c757fe5b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109415780601f1061091657610100808354040283529160200191610941565b6001600160a01b03821633141561161f576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b8261169781611ae4565b80156116a957506116a9610adb611b01565b80156116b55750600081115b6116f05760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000848152600c6020526040902061170c906004018484612227565b5083611716611b01565b6001600160a01b0316600080516020612537833981519152600360405180826004811115610c5d57fe5b61174b848484610c7c565b61175784848484611c48565b6117925760405162461bcd60e51b81526004018080602001828103825260328152602001806123796032913960400191505060405180910390fd5b50505050565b6000816117a481611ae4565b80156117b05750600081115b6117eb5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c60205260409020600301546001600160a01b031690565b60008161181781611ae4565b80156118235750600081115b61185e5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090206001015490565b606061188082611ae4565b6118bb5760405162461bcd60e51b815260040180806020018281038252602f815260200180612557602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452909183018282801561194e5780601f106119235761010080835404028352916020019161194e565b820191906000526020600020905b81548152906001019060200180831161193157829003601f168201915b50505050509050919050565b60008161196681611ae4565b80156119725750600081115b6119ad5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090205490565b600060018251101580156119d757506020825111155b611a28576040805162461bcd60e51b815260206004820152601a60248201527f414b41503a20496e76616c6964206c6162656c206c656e677468000000000000604482015290519081900360640190fd5b8151602080840191909120604080518084018790528082018390528151808203830181526060909101909152805192019190912080611aae576040805162461bcd60e51b815260206004820152601760248201527f414b41503a20496e76616c6964206e6f64652068617368000000000000000000604482015290519081900360640190fd5b949350505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b3390565b6000611b1082611ae4565b611b4b5760405162461bcd60e51b815260040180806020018281038252602c8152602001806123ff602c913960400191505060405180910390fd5b6000611b5683611390565b9050806001600160a01b0316846001600160a01b03161480611b915750836001600160a01b0316611b868461094c565b6001600160a01b0316145b80611aae5750611aae8185611ab6565b611baa82611ae4565b611be55760405162461bcd60e51b815260040180806020018281038252602c8152602001806124e2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610ccc928401906122a5565b611c0f838383611d7b565b611c198382611ebf565b610ccc8282611fb4565b611c2d8282611ff2565b611c378282611fb4565b611c4081612123565b5050565b5490565b6000611c5c846001600160a01b0316612167565b611c6857506001611aae565b604051630a85bd0160e11b815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015611ce2578181015183820152602001611cca565b50505050905090810190601f168015611d0f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b505050506040513d6020811015611d5b57600080fd5b50516001600160e01b031916630a85bd0160e11b14915050949350505050565b826001600160a01b0316611d8e82611390565b6001600160a01b031614611dd35760405162461bcd60e51b815260040180806020018281038252602981526020018061250e6029913960400191505060405180910390fd5b6001600160a01b038216611e185760405162461bcd60e51b81526004018080602001828103825260248152602001806123db6024913960400191505060405180910390fd5b611e218161216d565b6001600160a01b0383166000908152600360205260409020611e42906121aa565b6001600160a01b0382166000908152600360205260409020611e63906121c1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054611ee990600163ffffffff6121ca16565b600083815260066020526040902054909150808214611f84576001600160a01b0384166000908152600560205260408120805484908110611f2657fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110611f6457fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611fad906000198301612313565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6001600160a01b03821661204d576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61205681611ae4565b156120a8576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600390915290206120e7906121c1565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b3b151590565b6000818152600260205260409020546001600160a01b0316156121a757600081815260026020526040902080546001600160a01b03191690555b50565b80546121bd90600163ffffffff6121ca16565b9055565b80546001019055565b600082821115612221576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122685782800160ff19823516178555612295565b82800160010185558215612295579182015b8281111561229557823582559160200191906001019061227a565b506122a1929150612333565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122e657805160ff1916838001178555612295565b82800160010185558215612295579182015b828111156122955782518255916020019190600101906122f8565b815481835581811115610ccc57600083815260209020610ccc9181019083015b61094991905b808211156122a1576000815560010161233956fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572414b41503a207365742076616c75652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4e643f23cbc202af4f83dce574290af81b7d940546736d83eec38524c05908f84552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e414b41503a206f70657261746f7220717565727920666f72206e6f6e6578697374656e74206e6f64654552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a265627a7a72315820fad6b581bcdb67eb97ac3e02062c4c98693ea66a316c8b2acf1207be83e0b82064736f6c63430005100032",
+ "sourceMap": "737:5155:0:-;;;963:316;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;452:155:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;452:155:10;;;;;;;718:40:5;-1:-1:-1;;;;;;;;718:18:5;:40;:::i;:::-;2220::8;-1:-1:-1;;;;;;;;2220:18:8;:40;:::i;:::-;1316:51:9;-1:-1:-1;;;;;;;;1316:18:9;:51;:::i;:::-;825:12:11;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;847:16:11;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;951:49:11;-1:-1:-1;;;;;;;;951:18:11;:49;:::i;:::-;-1:-1:-1;1110:11:0;;-1:-1:-1;1135:27:0;;-1:-1:-1;1141:12:0;;-1:-1:-1;;;;;;1141:10:0;:12;:::i;:::-;1155:6;-1:-1:-1;;;;;1135:5:0;:27;:::i;:::-;1172:13;;;;:5;:13;;;;;-1:-1:-1;;1172:20:0;;;;:31;1178:6;;1224:12;-1:-1:-1;;;;;1224:10:0;:12;:::i;:::-;-1:-1:-1;;;;;1218:54:0;;1258:13;1218:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;963:316;737:5155;;1442:190:5;-1:-1:-1;;;;;;1517:25:5;;;;;1509:66;;;;;-1:-1:-1;;;1509:66:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1585:33:5;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1585:40:5;1621:4;1585:40;;;1442:190::o;1285:96:0:-;1364:10;1285:96;;:::o;3629:196:9:-;3692:24;3704:2;3708:7;3692:11;;;;;:24;;:::i;:::-;3727:40;3755:2;3759:7;-1:-1:-1;;;;;3727:27:9;:40;:::i;:::-;3778;3810:7;-1:-1:-1;;;;;3778:31:9;:40;:::i;:::-;3629:196;;:::o;9179:327:8:-;-1:-1:-1;;;;;9250:16:8;;9242:61;;;;;-1:-1:-1;;;9242:61:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9322:16;9330:7;-1:-1:-1;;;;;9322:7:8;:16;:::i;:::-;9321:17;9313:58;;;;;-1:-1:-1;;;9313:58:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;9382:20;;;;:11;:20;;;;;;;;:25;;-1:-1:-1;;;;;;9382:25:8;-1:-1:-1;;;;;9382:25:8;;;;;;;;9417:21;;:17;:21;;;;;:33;;:31;;;;;:33;;:::i;:::-;9466;;9491:7;;-1:-1:-1;;;;;9466:33:8;;;9483:1;;9466:33;;9483:1;;9466:33;9179:327;;:::o;5087:183:9:-;-1:-1:-1;;;;;5200:16:9;;;;;;;:12;:16;;;;;;;;:23;;5171:26;;;:17;:26;;;;;:52;;;5233:16;;;39:1:-1;23:18;;45:23;;5233:30:9;;;;;;;;5087:183::o;5465:161::-;5568:10;:17;;5541:24;;;;:15;:24;;;;;:44;;;39:1:-1;23:18;;45:23;;5595:24:9;;;;;;;5465:161::o;8092:152:8:-;8149:4;8181:20;;;:11;:20;;;;;;-1:-1:-1;;;;;8181:20:8;8218:19;;;8092:152::o;1181:89:4:-;1244:19;;1262:1;1244:19;;;1181:89::o;737:5155:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;737:5155:0;;;-1:-1:-1;737:5155:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;",
+ "deployedSourceMap": "737:5155:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;737:5155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:133:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;915:133:5;-1:-1:-1;;;;;;915:133:5;;:::i;:::-;;;;;;;;;;;;;;;;;;1112:83:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1112:83:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4237:200:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4237:200:8;;:::i;:::-;;;;-1:-1:-1;;;;;4237:200:8;;;;;;;;;;;;;;3541:411;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3541:411:8;;;;;;;;:::i;:::-;;4861:181:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4861:181:0;;:::i;5685:205::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5685:205:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5685:205:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5685:205:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;5685:205:0;;-1:-1:-1;5685:205:0;-1:-1:-1;5685:205:0;:::i;2130:94:9:-;;;:::i;:::-;;;;;;;;;;;;;;;;5877:285:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5877:285:8;;;;;;;;;;;;;;;;;:::i;1748:229:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1748:229:9;;;;;;;;:::i;4720:135:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4720:135:0;;:::i;2129:1794::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2129:1794:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2129:1794:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2129:1794:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;2129:1794:0;;-1:-1:-1;2129:1794:0;-1:-1:-1;2129:1794:0;:::i;5252:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5252:210:0;;;;;;-1:-1:-1;;;;;5252:210:0;;:::i;6795:132:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6795:132:8;;;;;;;;;;;;;;;;;:::i;3929:111:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3929:111:0;;:::i;2562:196:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2562:196:9;;:::i;4046:133:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4046:133:0;;:::i;2897:223:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2897:223:8;;:::i;2471:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2471:207:8;-1:-1:-1;;;;;2471:207:8;;:::i;4449:125:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4449:125:0;;:::i;5048:198::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5048:198:0;;;;;;;:::i;1304:87:11:-;;;:::i;4730:243:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4730:243:8;;;;;;;;;;:::i;5468:211:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5468:211:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5468:211:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5468:211:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;5468:211:0;;-1:-1:-1;5468:211:0;-1:-1:-1;5468:211:0;:::i;7632:265:8:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;7632:265:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7632:265:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7632:265:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7632:265:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7632:265:8;;-1:-1:-1;7632:265:8;;-1:-1:-1;;;;;7632:265:8:i;4580:134:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4580:134:0;;:::i;4318:125::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4318:125:0;;:::i;1591:202:11:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1591:202:11;;:::i;4185:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4185:127:0;;:::i;1744:379::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1744:379:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1744:379:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1744:379:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1744:379:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1744:379:0;;-1:-1:-1;1744:379:0;;-1:-1:-1;;;;;1744:379:0:i;5295:145:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5295:145:8;;;;;;;;;;:::i;915:133:5:-;-1:-1:-1;;;;;;1008:33:5;985:4;1008:33;;;;;;;;;;;;;;915:133::o;1112:83:11:-;1183:5;1176:12;;;;;;;;-1:-1:-1;;1176:12:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:13;;1176:12;;1183:5;;1176:12;;1183:5;1176:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1112:83;;:::o;4237:200:8:-;4296:7;4323:16;4331:7;4323;:16::i;:::-;4315:73;;;;-1:-1:-1;;;4315:73:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4406:24:8;;;;:15;:24;;;;;;-1:-1:-1;;;;;4406:24:8;;4237:200::o;3541:411::-;3604:13;3620:16;3628:7;3620;:16::i;:::-;3604:32;;3660:5;-1:-1:-1;;;;;3654:11:8;:2;-1:-1:-1;;;;;3654:11:8;;;3646:57;;;;-1:-1:-1;;;3646:57:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3722:10;-1:-1:-1;;;;;3722:19:8;;;;:58;;;3745:35;3762:5;3769:10;3745:16;:35::i;:::-;3714:148;;;;-1:-1:-1;;;3714:148:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3873:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;3873:29:8;-1:-1:-1;;;;;3873:29:8;;;;;;;;;3917:28;;3873:24;;3917:28;;;;;;;3541:411;;;:::o;4861:181:0:-;4916:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;:::-;1645:6;1612:18;:40::i;:::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4934:13;;;;:5;:13;;;;;4957:3;4934:20;;;;:26;4940:6;4992:12;:10;:12::i;:::-;-1:-1:-1;;;;;4975:60:0;-1:-1:-1;;;;;;;;;;;5014:20:0;4975:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;4861:181;;:::o;5685:205::-;5762:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;1612:40::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5780:25;5793:6;5801:3;;5780:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5780:12:0;;-1:-1:-1;;;5780:25:0:i;:::-;5851:6;5837:12;:10;:12::i;:::-;-1:-1:-1;;;;;5820:63:0;-1:-1:-1;;;;;;;;;;;5859:23:0;5820:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;5685:205;;;;:::o;2130:94:9:-;2200:10;:17;2130:94;:::o;5877:285:8:-;6019:39;6038:10;6050:7;6019:18;:39::i;:::-;6011:101;;;;-1:-1:-1;;;6011:101:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6123:32;6137:4;6143:2;6147:7;6123:13;:32::i;:::-;5877:285;;;:::o;1748:229:9:-;1828:7;1863:16;1873:5;1863:9;:16::i;:::-;1855:5;:24;1847:80;;;;-1:-1:-1;;;1847:80:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1944:19:9;;;;;;:12;:19;;;;;:26;;1964:5;;1944:26;;;;;;;;;;;;;;1937:33;;1748:229;;;;:::o;4720:135:0:-;4795:12;4778:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4826:13;;;;:5;:13;;;;;;;;;:22;;4819:29;;;;;;-1:-1:-1;;4819:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4826:22;;4819:29;;4826:22;4819:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:135;;;;:::o;2129:1794::-;2199:11;2532;2546:23;2553:8;2563:5;;2546:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2546:6:0;;-1:-1:-1;;;2546:23:0:i;:::-;2532:37;;2580:18;2601:42;2620:12;:10;:12::i;:::-;2634:8;2601:18;:42::i;:::-;2580:63;;2653:15;2671;2679:6;2671:7;:15::i;:::-;2653:33;;2701:10;:54;;;;;2715:40;2734:12;:10;:12::i;:::-;2748:6;2715:18;:40::i;:::-;2697:1180;;;2791:13;;;;:5;:13;;;;;:22;2779:34;;2771:72;;;;;-1:-1:-1;;;2771:72:0;;;;;;;;;;;;-1:-1:-1;;;2771:72:0;;;;;;;;;;;;;;;2922:13;;;;:5;:13;;;;;-1:-1:-1;;2922:20:0;;;;:31;3000:8;2928:6;2978:12;:10;:12::i;:::-;-1:-1:-1;;;;;2972:63:0;;3010:5;;3017:17;2972:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;2972:63:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;2972:63:0;;;;-1:-1:-1;2972:63:0;;-1:-1:-1;;;;;2972:63:0;3057:1;3050:8;;;;;;;2697:1180;3080:10;3079:11;:28;;;;;3094:13;3079:28;3075:802;;;3180:27;3186:12;:10;:12::i;:::-;3200:6;3180:5;:27::i;:::-;3221:13;;;;:5;:13;;;;;:33;;;-1:-1:-1;;3268:20:0;;;;:31;3246:8;3227:6;3324:12;:10;:12::i;:::-;-1:-1:-1;;;;;3318:59:0;;3356:5;;3363:13;3318:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;3318:59:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;3318:59:0;;;;-1:-1:-1;3318:59:0;;-1:-1:-1;;;;;3318:59:0;3399:1;3392:8;;;;;;;3075:802;3421:10;:41;;;;-1:-1:-1;3435:13:0;;;;:5;:13;;;;;:20;;;3459:3;-1:-1:-1;3435:27:0;3421:41;:58;;;;;3466:13;3421:58;3417:460;;;3515:13;;;;:5;:13;;;;;:22;3503:34;;3495:72;;;;;-1:-1:-1;;;3495:72:0;;;;;;;;;;;;-1:-1:-1;;;3495:72:0;;;;;;;;;;;;;;;3663:52;3677:15;3685:6;3677:7;:15::i;:::-;3694:12;:10;:12::i;:::-;3708:6;3663:13;:52::i;:::-;3729:13;;;;:5;:13;;;;;-1:-1:-1;;3729:20:0;;;;:31;3807:8;3735:6;3785:12;:10;:12::i;:::-;-1:-1:-1;;;;;3779:64:0;;3817:5;;3824:18;3779:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;3779:64:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;3779:64:0;;;;-1:-1:-1;3779:64:0;;-1:-1:-1;;;;;3779:64:0;3865:1;3858:8;;;;;;;3417:460;3915:1;3908:8;;;;;2129:1794;;;;;;:::o;5252:210::-;5325:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;1612:40::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5343:13;;;;:5;:13;;;;;:24;;:32;;-1:-1:-1;;;;;;5343:32:0;-1:-1:-1;;;;;5343:32:0;;;;;:13;5407:12;:10;:12::i;:::-;-1:-1:-1;;;;;5390:65:0;-1:-1:-1;;;;;;;;;;;5429:25:0;5390:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;5252:210;;;:::o;6795:132:8:-;6881:39;6898:4;6904:2;6908:7;6881:39;;;;;;;;;;;;:16;:39::i;3929:111:0:-;3981:4;4004:15;4012:6;4004:7;:15::i;:::-;:29;;;;;4032:1;4023:6;:10;4004:29;3997:36;3929:111;-1:-1:-1;;3929:111:0:o;2562:196:9:-;2620:7;2655:13;:11;:13::i;:::-;2647:5;:21;2639:78;;;;-1:-1:-1;;;2639:78:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2734:10;2745:5;2734:17;;;;;;;;;;;;;;;;2727:24;;2562:196;;;:::o;4046:133:0:-;4109:4;4132:40;4151:12;:10;:12::i;:::-;4165:6;4132:18;:40::i;2897:223:8:-;2952:7;2987:20;;;:11;:20;;;;;;-1:-1:-1;;;;;2987:20:8;3025:19;3017:73;;;;-1:-1:-1;;;3017:73:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:207;2526:7;-1:-1:-1;;;;;2553:19:8;;2545:74;;;;-1:-1:-1;;;2545:74:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2637:24:8;;;;;;:17;:24;;;;;:34;;:32;:34::i;4449:125:0:-;4523:4;4506:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4546:13:0;;;;:5;:13;;;;;:21;;;;4449:125::o;5048:198::-;5115:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;1612:40::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5133:13;;;;:5;:13;;;;;:21;;:29;;;5139:6;5194:12;:10;:12::i;:::-;-1:-1:-1;;;;;5177:62:0;-1:-1:-1;;;;;;;;;;;5216:22:0;5177:62;;;;;;;;;;;1304:87:11;1377:7;1370:14;;;;;;;;-1:-1:-1;;1370:14:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1345:13;;1370:14;;1377:7;;1370:14;;1377:7;1370:14;;;;;;;;;;;;;;;;;;;;;;;;4730:243:8;-1:-1:-1;;;;;4809:16:8;;4815:10;4809:16;;4801:54;;;;;-1:-1:-1;;;4801:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;4885:10;4866:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;4866:34:8;;;;;;;;;;;;:45;;-1:-1:-1;;4866:45:8;;;;;;;;;;4926:40;;;;;;;4866:34;;4885:10;4926:40;;;;;;;;;;;4730:243;;:::o;5468:211:0:-;5546:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;1612:40::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5564:13;;;;:5;:13;;;;;:30;;:22;;5589:5;;5564:30;:::i;:::-;;5640:6;5626:12;:10;:12::i;:::-;-1:-1:-1;;;;;5609:63:0;-1:-1:-1;;;;;;;;;;;5648:23:0;5609:63;;;;;;;;;;;7632:265:8;7738:31;7751:4;7757:2;7761:7;7738:12;:31::i;:::-;7787:48;7810:4;7816:2;7820:7;7829:5;7787:22;:48::i;:::-;7779:111;;;;-1:-1:-1;;;7779:111:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7632:265;;;;:::o;4580:134:0:-;4657:7;4640:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4683:13:0;;;;:5;:13;;;;;:24;;;-1:-1:-1;;;;;4683:24:0;;4580:134::o;4318:125::-;4393:4;4376:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4416:13:0;;;;:5;:13;;;;;:20;;;;4318:125::o;1591:202:11:-;1649:13;1682:16;1690:7;1682;:16::i;:::-;1674:76;;;;-1:-1:-1;;;1674:76:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1767:19;;;;:10;:19;;;;;;;;;1760:26;;;;;;-1:-1:-1;;1760:26:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1767:19;;1760:26;;1767:19;1760:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1591:202;;;:::o;4185:127:0:-;4260:4;4243:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4283:13:0;;;;:5;:13;;;;;:22;;4185:127::o;1744:379::-;1816:7;1859:1;1843:5;:12;:17;;:39;;;;;1880:2;1864:5;:12;:18;;1843:39;1835:78;;;;;-1:-1:-1;;;1835:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1944:16;;;;;;;;;;1997:31;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;1997:31:0;;;;;;;1987:42;;;;;;;;2048:10;2040:46;;;;;-1:-1:-1;;;2040:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2109:6;1744:379;-1:-1:-1;;;;1744:379:0:o;5295:145:8:-;-1:-1:-1;;;;;5398:25:8;;;5375:4;5398:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;5295:145::o;8092:152::-;8149:4;8181:20;;;:11;:20;;;;;;-1:-1:-1;;;;;8181:20:8;8218:19;;;8092:152::o;1285:96:0:-;1364:10;1285:96;:::o;8605:329:8:-;8690:4;8714:16;8722:7;8714;:16::i;:::-;8706:73;;;;-1:-1:-1;;;8706:73:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8789:13;8805:16;8813:7;8805;:16::i;:::-;8789:32;;8850:5;-1:-1:-1;;;;;8839:16:8;:7;-1:-1:-1;;;;;8839:16:8;;:51;;;;8883:7;-1:-1:-1;;;;;8859:31:8;:20;8871:7;8859:11;:20::i;:::-;-1:-1:-1;;;;;8859:31:8;;8839:51;:87;;;;8894:32;8911:5;8918:7;8894:16;:32::i;2032:192:11:-;2117:16;2125:7;2117;:16::i;:::-;2109:73;;;;-1:-1:-1;;;2109:73:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2192:19;;;;:10;:19;;;;;;;;:25;;;;;;;;:::i;3133:239:9:-;3218:38;3238:4;3244:2;3248:7;3218:19;:38::i;:::-;3267:47;3300:4;3306:7;3267:32;:47::i;:::-;3325:40;3353:2;3357:7;3325:27;:40::i;3629:196::-;3692:24;3704:2;3708:7;3692:11;:24::i;:::-;3727:40;3755:2;3759:7;3727:27;:40::i;:::-;3778;3810:7;3778:31;:40::i;:::-;3629:196;;:::o;1063:112:4:-;1154:14;;1063:112::o;11771:347:8:-;11892:4;11917:15;:2;-1:-1:-1;;;;;11917:13:8;;:15::i;:::-;11912:58;;-1:-1:-1;11955:4:8;11948:11;;11912:58;11996:70;;-1:-1:-1;;;11996:70:8;;12033:10;11996:70;;;;;;-1:-1:-1;;;;;11996:70:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;11980:13;;11996:36;;;;;;12033:10;;12045:4;;12051:7;;12060:5;;11996:70;;;;;;;;;;;11980:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11996:70:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11996:70:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11996:70:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11996:70:8;-1:-1:-1;;;;;;12084:26:8;-1:-1:-1;;;12084:26:8;;-1:-1:-1;;11771:347:8;;;;;;:::o;10751:447::-;10864:4;-1:-1:-1;;;;;10844:24:8;:16;10852:7;10844;:16::i;:::-;-1:-1:-1;;;;;10844:24:8;;10836:78;;;;-1:-1:-1;;;10836:78:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10932:16:8;;10924:65;;;;-1:-1:-1;;;10924:65:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11000:23;11015:7;11000:14;:23::i;:::-;-1:-1:-1;;;;;11034:23:8;;;;;;:17;:23;;;;;:35;;:33;:35::i;:::-;-1:-1:-1;;;;;11079:21:8;;;;;;:17;:21;;;;;:33;;:31;:33::i;:::-;11123:20;;;;:11;:20;;;;;;:25;;-1:-1:-1;;;;;;11123:25:8;-1:-1:-1;;;;;11123:25:8;;;;;;;;;11164:27;;11123:20;;11164:27;;;;;;;10751:447;;;:::o;6241:1128:9:-;-1:-1:-1;;;;;6528:18:9;;6503:22;6528:18;;;:12;:18;;;;;:25;:32;;6558:1;6528:32;:29;:32;:::i;:::-;6570:18;6591:26;;;:17;:26;;;;;;6503:57;;-1:-1:-1;6721:28:9;;;6717:323;;-1:-1:-1;;;;;6787:18:9;;6765:19;6787:18;;;:12;:18;;;;;:34;;6806:14;;6787:34;;;;;;;;;;;;;;6765:56;;6869:11;6836:12;:18;6849:4;-1:-1:-1;;;;;6836:18:9;-1:-1:-1;;;;;6836:18:9;;;;;;;;;;;;6855:10;6836:30;;;;;;;;;;;;;;;;;;;:44;;;;6952:30;;;:17;:30;;;;;:43;;;6717:323;-1:-1:-1;;;;;7126:18:9;;;;;;:12;:18;;;;;:27;;;;;-1:-1:-1;;7126:27:9;;;:::i;:::-;;6241:1128;;;;:::o;5087:183::-;-1:-1:-1;;;;;5200:16:9;;;;;;;:12;:16;;;;;;;;:23;;5171:26;;;:17;:26;;;;;:52;;;5233:16;;;39:1:-1;23:18;;45:23;;5233:30:9;;;;;;;;5087:183::o;9179:327:8:-;-1:-1:-1;;;;;9250:16:8;;9242:61;;;;;-1:-1:-1;;;9242:61:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9322:16;9330:7;9322;:16::i;:::-;9321:17;9313:58;;;;;-1:-1:-1;;;9313:58:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;9382:20;;;;:11;:20;;;;;;;;:25;;-1:-1:-1;;;;;;9382:25:8;-1:-1:-1;;;;;9382:25:8;;;;;;;;9417:21;;:17;:21;;;;;:33;;:31;:33::i;:::-;9466;;9491:7;;-1:-1:-1;;;;;9466:33:8;;;9483:1;;9466:33;;9483:1;;9466:33;9179:327;;:::o;5465:161:9:-;5568:10;:17;;5541:24;;;;:15;:24;;;;;:44;;;39:1:-1;23:18;;45:23;;5595:24:9;;;;;;;5465:161::o;542:413:16:-;902:20;940:8;;;542:413::o;12280:171:8:-;12379:1;12343:24;;;:15;:24;;;;;;-1:-1:-1;;;;;12343:24:8;:38;12339:106;;12432:1;12397:24;;;:15;:24;;;;;:37;;-1:-1:-1;;;;;;12397:37:8;;;12339:106;12280:171;:::o;1276:108:4:-;1356:14;;:21;;1375:1;1356:21;:18;:21;:::i;:::-;1339:38;;1276:108::o;1181:89::-;1244:19;;1262:1;1244:19;;;1181:89::o;1274:179:7:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:7;;;1274:179::o;737:5155:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;737:5155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;737:5155:0;;;-1:-1:-1;737:5155:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
+ "source": "// Copyright (C) 2019 Christian Felde\n// Copyright (C) 2019 Mohamed Elshami\n\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n// http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npragma solidity ^0.5.0;\n\nimport \"./IAKAP.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721Full.sol\";\n\ncontract AKAF is IAKAP, ERC721Full {\n struct Node {\n uint parentId;\n uint expiry;\n uint seeAlso;\n address seeAddress;\n bytes nodeBody;\n }\n\n mapping(uint => Node) private nodes;\n\n constructor() ERC721Full(\"AKA Forever Registry\", \"AKAF\") public {\n // Create the special root node and assigned msg.sender as owner\n uint nodeId = 0;\n _mint(_msgSender(), nodeId);\n nodes[nodeId].expiry = uint(-1);\n emit Claim(_msgSender(), nodeId, nodeId, \"\", ClaimCase.NEW);\n }\n\n function _msgSender() internal view returns (address payable) {\n return msg.sender;\n }\n\n modifier onlyExisting(uint nodeId) {\n require(_exists(nodeId) && nodeId > 0, \"AKAP: operator query for nonexistent node\");\n\n _;\n }\n\n modifier onlyApproved(uint nodeId) {\n require(_exists(nodeId) && _isApprovedOrOwner(_msgSender(), nodeId) && nodeId > 0, \"AKAP: set value caller is not owner nor approved\");\n\n _;\n }\n\n function hashOf(uint parentId, bytes memory label) public pure returns (uint id) {\n require(label.length >= 1 && label.length <= 32, \"AKAP: Invalid label length\");\n\n bytes32 labelHash = keccak256(label);\n bytes32 nodeId = keccak256(abi.encode(parentId, labelHash));\n\n require(nodeId > 0, \"AKAP: Invalid node hash\");\n\n return uint(nodeId);\n }\n\n function claim(uint parentId, bytes calldata label) external returns (uint status) {\n // Claim logic is as found in AKAP, but with an expiry timestamp set to \"forever\".\n // Owners of a node on an AKAF contract does hence not need to reclaim their nodes.\n // Node owners may still explicitly expire a node if they wish.\n\n // Get hash/id of the node caller is claiming\n uint nodeId = hashOf(parentId, label);\n\n bool isParentOwner = _isApprovedOrOwner(_msgSender(), parentId);\n bool nodeExists = _exists(nodeId);\n\n if (nodeExists && _isApprovedOrOwner(_msgSender(), nodeId)) {\n require(parentId == nodes[nodeId].parentId, \"AKAP: Invalid parent hash\");\n\n // Caller is current owner/approved, extend lease..\n nodes[nodeId].expiry = uint(-1);\n emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.RECLAIM);\n\n return 1;\n } else if (!nodeExists && isParentOwner) {\n // Node does not exist, allocate to caller..\n _mint(_msgSender(), nodeId);\n nodes[nodeId].parentId = parentId;\n nodes[nodeId].expiry = uint(-1);\n emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.NEW);\n\n return 2;\n } else if (nodeExists && nodes[nodeId].expiry <= now && isParentOwner) {\n require(parentId == nodes[nodeId].parentId, \"AKAP: Invalid parent hash\");\n\n // Node exists and is expired, allocate to caller and extend lease..\n _transferFrom(ownerOf(nodeId), _msgSender(), nodeId);\n nodes[nodeId].expiry = uint(-1);\n emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.TRANSFER);\n\n return 3;\n }\n\n // No action\n return 0;\n }\n\n function exists(uint nodeId) external view returns (bool) {\n return _exists(nodeId) && nodeId > 0;\n }\n\n function isApprovedOrOwner(uint nodeId) external view returns (bool) {\n return _isApprovedOrOwner(_msgSender(), nodeId);\n }\n\n function parentOf(uint nodeId) external view onlyExisting(nodeId) returns (uint) {\n return nodes[nodeId].parentId;\n }\n\n function expiryOf(uint nodeId) external view onlyExisting(nodeId) returns (uint) {\n return nodes[nodeId].expiry;\n }\n\n function seeAlso(uint nodeId) external view onlyExisting(nodeId) returns (uint) {\n return nodes[nodeId].seeAlso;\n }\n\n function seeAddress(uint nodeId) external view onlyExisting(nodeId) returns (address) {\n return nodes[nodeId].seeAddress;\n }\n\n function nodeBody(uint nodeId) external view onlyExisting(nodeId) returns (bytes memory) {\n return nodes[nodeId].nodeBody;\n }\n\n function expireNode(uint nodeId) external onlyApproved(nodeId) {\n nodes[nodeId].expiry = now;\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.EXPIRY);\n }\n\n function setSeeAlso(uint nodeId, uint value) external onlyApproved(nodeId) {\n nodes[nodeId].seeAlso = value;\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.SEE_ALSO);\n }\n\n function setSeeAddress(uint nodeId, address value) external onlyApproved(nodeId) {\n nodes[nodeId].seeAddress = value;\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.SEE_ADDRESS);\n }\n\n function setNodeBody(uint nodeId, bytes calldata value) external onlyApproved(nodeId) {\n nodes[nodeId].nodeBody = value;\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.NODE_BODY);\n }\n\n function setTokenURI(uint nodeId, string calldata uri) external onlyApproved(nodeId) {\n _setTokenURI(nodeId, uri);\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.TOKEN_URI);\n }\n}",
+ "sourcePath": "/private/tmp/eth/akap/contracts/AKAF.sol",
+ "ast": {
+ "absolutePath": "/private/tmp/eth/akap/contracts/AKAF.sol",
+ "exportedSymbols": {
+ "AKAF": [
+ 564
+ ]
+ },
+ "id": 565,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".0"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "627:23:0"
+ },
+ {
+ "absolutePath": "/private/tmp/eth/akap/contracts/IAKAP.sol",
+ "file": "./IAKAP.sol",
+ "id": 2,
+ "nodeType": "ImportDirective",
+ "scope": 565,
+ "sourceUnit": 1319,
+ "src": "652:21:0",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Full.sol",
+ "file": "@openzeppelin/contracts/token/ERC721/ERC721Full.sol",
+ "id": 3,
+ "nodeType": "ImportDirective",
+ "scope": 565,
+ "sourceUnit": 2546,
+ "src": "674:61:0",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 4,
+ "name": "IAKAP",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 1318,
+ "src": "754:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAKAP_$1318",
+ "typeString": "contract IAKAP"
+ }
+ },
+ "id": 5,
+ "nodeType": "InheritanceSpecifier",
+ "src": "754:5:0"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 6,
+ "name": "ERC721Full",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 2545,
+ "src": "761:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ERC721Full_$2545",
+ "typeString": "contract ERC721Full"
+ }
+ },
+ "id": 7,
+ "nodeType": "InheritanceSpecifier",
+ "src": "761:10:0"
+ }
+ ],
+ "contractDependencies": [
+ 1318,
+ 1476,
+ 1486,
+ 2184,
+ 2521,
+ 2545,
+ 2674,
+ 2777,
+ 2804,
+ 2827
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 564,
+ "linearizedBaseContracts": [
+ 564,
+ 2545,
+ 2674,
+ 2827,
+ 2521,
+ 2804,
+ 2184,
+ 2777,
+ 1476,
+ 1486,
+ 1318
+ ],
+ "name": "AKAF",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "canonicalName": "AKAF.Node",
+ "id": 18,
+ "members": [
+ {
+ "constant": false,
+ "id": 9,
+ "name": "parentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "800:13:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 8,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "800:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 11,
+ "name": "expiry",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "823:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 10,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "823:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 13,
+ "name": "seeAlso",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "844:12:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 12,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "844:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 15,
+ "name": "seeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "866:18:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 14,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "866:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 17,
+ "name": "nodeBody",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "894:14:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 16,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "894:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Node",
+ "nodeType": "StructDefinition",
+ "scope": 564,
+ "src": "778:137:0",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 22,
+ "name": "nodes",
+ "nodeType": "VariableDeclaration",
+ "scope": 564,
+ "src": "921:35:0",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node)"
+ },
+ "typeName": {
+ "id": 21,
+ "keyType": {
+ "id": 19,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "929:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "921:21:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node)"
+ },
+ "valueType": {
+ "contractScope": null,
+ "id": 20,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 18,
+ "src": "937:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage_ptr",
+ "typeString": "struct AKAF.Node"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 59,
+ "nodeType": "Block",
+ "src": "1027:252:0",
+ "statements": [
+ {
+ "assignments": [
+ 30
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 30,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 59,
+ "src": "1110:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 29,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1110:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 32,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 31,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1124:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1110:15:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 34,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "1141:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 35,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1141:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 36,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 30,
+ "src": "1155:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 33,
+ "name": "_mint",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2328
+ ],
+ "referencedDeclaration": 2328,
+ "src": "1135:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 37,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1135:27:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 38,
+ "nodeType": "ExpressionStatement",
+ "src": "1135:27:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 47,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 39,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "1172:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 41,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 40,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 30,
+ "src": "1178:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1172:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 42,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "1172:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 45,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "-",
+ "prefix": true,
+ "src": "1200:2:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 44,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1201:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ ],
+ "id": 43,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1195:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 46,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1195:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1172:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 48,
+ "nodeType": "ExpressionStatement",
+ "src": "1172:31:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 50,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "1224:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 51,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1224:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 52,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 30,
+ "src": "1238:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 53,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 30,
+ "src": "1246:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "",
+ "id": 54,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1254:2:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
+ "typeString": "literal_string \"\""
+ },
+ "value": ""
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 55,
+ "name": "ClaimCase",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1094,
+ "src": "1258:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$",
+ "typeString": "type(enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 56,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "NEW",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1258:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
+ "typeString": "literal_string \"\""
+ },
+ {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ ],
+ "id": 49,
+ "name": "Claim",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1112,
+ "src": "1218:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$",
+ "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 57,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1218:54:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 58,
+ "nodeType": "EmitStatement",
+ "src": "1213:59:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 60,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "414b4120466f7265766572205265676973747279",
+ "id": 25,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "988:22:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_cae7ceeb2ebe151f1c27619f938a56491425da9af3053c9e79e96783851bd6e3",
+ "typeString": "literal_string \"AKA Forever Registry\""
+ },
+ "value": "AKA Forever Registry"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b4146",
+ "id": 26,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1012:6:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_a508d8c7eae35b3a6e2f5a6804bed7b2f7bf00c46f7af065a48ea5aa52ab21e5",
+ "typeString": "literal_string \"AKAF\""
+ },
+ "value": "AKAF"
+ }
+ ],
+ "id": 27,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 24,
+ "name": "ERC721Full",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2545,
+ "src": "977:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_ERC721Full_$2545_$",
+ "typeString": "type(contract ERC721Full)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "977:42:0"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 23,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "974:2:0"
+ },
+ "returnParameters": {
+ "id": 28,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1027:0:0"
+ },
+ "scope": 564,
+ "src": "963:316:0",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 68,
+ "nodeType": "Block",
+ "src": "1347:34:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 65,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2877,
+ "src": "1364:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 66,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1364:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "functionReturnParameters": 64,
+ "id": 67,
+ "nodeType": "Return",
+ "src": "1357:17:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 69,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_msgSender",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 61,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1304:2:0"
+ },
+ "returnParameters": {
+ "id": 64,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 63,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "1330:15:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ "typeName": {
+ "id": 62,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1330:15:0",
+ "stateMutability": "payable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1329:17:0"
+ },
+ "scope": 564,
+ "src": "1285:96:0",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 85,
+ "nodeType": "Block",
+ "src": "1422:112:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 80,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 75,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 71,
+ "src": "1448:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 74,
+ "name": "_exists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1924,
+ "src": "1440:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (uint256) view returns (bool)"
+ }
+ },
+ "id": 76,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1440:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 79,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 77,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 71,
+ "src": "1459:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 78,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1468:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "1459:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "1440:29:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a206f70657261746f7220717565727920666f72206e6f6e6578697374656e74206e6f6465",
+ "id": 81,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1471:43:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_a658d58523fc6cf084d1dd3125a8fc1b3ad66eb4d398c72b5853657b82ff950b",
+ "typeString": "literal_string \"AKAP: operator query for nonexistent node\""
+ },
+ "value": "AKAP: operator query for nonexistent node"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_a658d58523fc6cf084d1dd3125a8fc1b3ad66eb4d398c72b5853657b82ff950b",
+ "typeString": "literal_string \"AKAP: operator query for nonexistent node\""
+ }
+ ],
+ "id": 73,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "1432:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 82,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1432:83:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 83,
+ "nodeType": "ExpressionStatement",
+ "src": "1432:83:0"
+ },
+ {
+ "id": 84,
+ "nodeType": "PlaceholderStatement",
+ "src": "1526:1:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 86,
+ "name": "onlyExisting",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 72,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 71,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 86,
+ "src": "1409:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 70,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1409:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1408:13:0"
+ },
+ "src": "1387:147:0",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 108,
+ "nodeType": "Block",
+ "src": "1575:163:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 103,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 99,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 92,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 88,
+ "src": "1601:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 91,
+ "name": "_exists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1924,
+ "src": "1593:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (uint256) view returns (bool)"
+ }
+ },
+ "id": 93,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1593:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 95,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "1631:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 96,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1631:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 97,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 88,
+ "src": "1645:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 94,
+ "name": "_isApprovedOrOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1963,
+ "src": "1612:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) view returns (bool)"
+ }
+ },
+ "id": 98,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1612:40:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "1593:59:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 102,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 100,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 88,
+ "src": "1656:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 101,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1665:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "1656:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "1593:73:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a207365742076616c75652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
+ "id": 104,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1668:50:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_267122d712ca03e8a1e34737e2379df35cd276456b17514e34146918d87bc92c",
+ "typeString": "literal_string \"AKAP: set value caller is not owner nor approved\""
+ },
+ "value": "AKAP: set value caller is not owner nor approved"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_267122d712ca03e8a1e34737e2379df35cd276456b17514e34146918d87bc92c",
+ "typeString": "literal_string \"AKAP: set value caller is not owner nor approved\""
+ }
+ ],
+ "id": 90,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "1585:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 105,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1585:134:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 106,
+ "nodeType": "ExpressionStatement",
+ "src": "1585:134:0"
+ },
+ {
+ "id": 107,
+ "nodeType": "PlaceholderStatement",
+ "src": "1730:1:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 109,
+ "name": "onlyApproved",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 89,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 88,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 109,
+ "src": "1562:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 87,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1562:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1561:13:0"
+ },
+ "src": "1540:198:0",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 158,
+ "nodeType": "Block",
+ "src": "1825:298:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 127,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 122,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 119,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 113,
+ "src": "1843:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 120,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1843:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 121,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1859:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "1843:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 126,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 123,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 113,
+ "src": "1864:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 124,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1864:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "3332",
+ "id": 125,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1880:2:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_32_by_1",
+ "typeString": "int_const 32"
+ },
+ "value": "32"
+ },
+ "src": "1864:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "1843:39:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a20496e76616c6964206c6162656c206c656e677468",
+ "id": 128,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1884:28:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_00918a32a10d2b64eddc50bddc5eb424a8dd1297b66da0875142c7f852ae50b5",
+ "typeString": "literal_string \"AKAP: Invalid label length\""
+ },
+ "value": "AKAP: Invalid label length"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_00918a32a10d2b64eddc50bddc5eb424a8dd1297b66da0875142c7f852ae50b5",
+ "typeString": "literal_string \"AKAP: Invalid label length\""
+ }
+ ],
+ "id": 118,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "1835:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 129,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1835:78:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 130,
+ "nodeType": "ExpressionStatement",
+ "src": "1835:78:0"
+ },
+ {
+ "assignments": [
+ 132
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 132,
+ "name": "labelHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 158,
+ "src": "1924:17:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 131,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1924:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 136,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 134,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 113,
+ "src": "1954:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 133,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2871,
+ "src": "1944:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 135,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1944:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1924:36:0"
+ },
+ {
+ "assignments": [
+ 138
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 138,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 158,
+ "src": "1970:14:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 137,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1970:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 146,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 142,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 111,
+ "src": "2008:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 143,
+ "name": "labelHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 132,
+ "src": "2018:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 140,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2864,
+ "src": "1997:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 141,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encode",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1997:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 144,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1997:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 139,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2871,
+ "src": "1987:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 145,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1987:42:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1970:59:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 150,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 148,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 138,
+ "src": "2048:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 149,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2057:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "2048:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a20496e76616c6964206e6f64652068617368",
+ "id": 151,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2060:25:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_f83c7c02ea33e77031e907158a5c8c3333335ada800bb7480d52a6ecfa1f04e2",
+ "typeString": "literal_string \"AKAP: Invalid node hash\""
+ },
+ "value": "AKAP: Invalid node hash"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_f83c7c02ea33e77031e907158a5c8c3333335ada800bb7480d52a6ecfa1f04e2",
+ "typeString": "literal_string \"AKAP: Invalid node hash\""
+ }
+ ],
+ "id": 147,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "2040:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 152,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2040:46:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 153,
+ "nodeType": "ExpressionStatement",
+ "src": "2040:46:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 155,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 138,
+ "src": "2109:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 154,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2104:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 156,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2104:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 117,
+ "id": 157,
+ "nodeType": "Return",
+ "src": "2097:19:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 159,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hashOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 114,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 111,
+ "name": "parentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 159,
+ "src": "1760:13:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 110,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1760:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 113,
+ "name": "label",
+ "nodeType": "VariableDeclaration",
+ "scope": 159,
+ "src": "1775:18:0",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 112,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1775:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1759:35:0"
+ },
+ "returnParameters": {
+ "id": 117,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 116,
+ "name": "id",
+ "nodeType": "VariableDeclaration",
+ "scope": 159,
+ "src": "1816:7:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 115,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1816:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1815:9:0"
+ },
+ "scope": 564,
+ "src": "1744:379:0",
+ "stateMutability": "pure",
+ "superFunction": 1153,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 326,
+ "nodeType": "Block",
+ "src": "2212:1711:0",
+ "statements": [
+ {
+ "assignments": [
+ 169
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 169,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 326,
+ "src": "2532:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 168,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "2532:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 174,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 171,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "2553:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 172,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 163,
+ "src": "2563:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "id": 170,
+ "name": "hashOf",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 159
+ ],
+ "referencedDeclaration": 159,
+ "src": "2546:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
+ "typeString": "function (uint256,bytes memory) pure returns (uint256)"
+ }
+ },
+ "id": 173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2546:23:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2532:37:0"
+ },
+ {
+ "assignments": [
+ 176
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 176,
+ "name": "isParentOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 326,
+ "src": "2580:18:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 175,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "2580:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 182,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 178,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "2620:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 179,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2620:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 180,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "2634:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 177,
+ "name": "_isApprovedOrOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1963,
+ "src": "2601:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) view returns (bool)"
+ }
+ },
+ "id": 181,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2601:42:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2580:63:0"
+ },
+ {
+ "assignments": [
+ 184
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 184,
+ "name": "nodeExists",
+ "nodeType": "VariableDeclaration",
+ "scope": 326,
+ "src": "2653:15:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 183,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "2653:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 188,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 186,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2679:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 185,
+ "name": "_exists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1924,
+ "src": "2671:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (uint256) view returns (bool)"
+ }
+ },
+ "id": 187,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2671:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2653:33:0"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 195,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 189,
+ "name": "nodeExists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 184,
+ "src": "2701:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 191,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "2734:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 192,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2734:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 193,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2748:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 190,
+ "name": "_isApprovedOrOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1963,
+ "src": "2715:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) view returns (bool)"
+ }
+ },
+ "id": 194,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2715:40:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "2701:54:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 232,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 230,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "3079:11:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 229,
+ "name": "nodeExists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 184,
+ "src": "3080:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 231,
+ "name": "isParentOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 176,
+ "src": "3094:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "3079:28:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 278,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 276,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 269,
+ "name": "nodeExists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 184,
+ "src": "3421:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 275,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 270,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3435:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 272,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 271,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3441:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3435:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 273,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "3435:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 274,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2879,
+ "src": "3459:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3435:27:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "3421:41:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 277,
+ "name": "isParentOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 176,
+ "src": "3466:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "3421:58:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 321,
+ "nodeType": "IfStatement",
+ "src": "3417:460:0",
+ "trueBody": {
+ "id": 320,
+ "nodeType": "Block",
+ "src": "3481:396:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 285,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 280,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3503:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 281,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3515:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 283,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 282,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3521:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3515:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 284,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "parentId",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9,
+ "src": "3515:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3503:34:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a20496e76616c696420706172656e742068617368",
+ "id": 286,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3539:27:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6",
+ "typeString": "literal_string \"AKAP: Invalid parent hash\""
+ },
+ "value": "AKAP: Invalid parent hash"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6",
+ "typeString": "literal_string \"AKAP: Invalid parent hash\""
+ }
+ ],
+ "id": 279,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "3495:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 287,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3495:72:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 288,
+ "nodeType": "ExpressionStatement",
+ "src": "3495:72:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 291,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3685:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 290,
+ "name": "ownerOf",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1720
+ ],
+ "referencedDeclaration": 1720,
+ "src": "3677:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
+ "typeString": "function (uint256) view returns (address)"
+ }
+ },
+ "id": 292,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3677:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 293,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "3694:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 294,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3694:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 295,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3708:6:0",
+ "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": 289,
+ "name": "_transferFrom",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2304
+ ],
+ "referencedDeclaration": 2304,
+ "src": "3663:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 296,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3663:52:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 297,
+ "nodeType": "ExpressionStatement",
+ "src": "3663:52:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 306,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 298,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3729:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 300,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 299,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3735:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3729:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 301,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "3729:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 304,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "-",
+ "prefix": true,
+ "src": "3757:2:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 303,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3758:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ ],
+ "id": 302,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "3752:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 305,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3752:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3729:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 307,
+ "nodeType": "ExpressionStatement",
+ "src": "3729:31:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 309,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "3785:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 310,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3785:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 311,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3799:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 312,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3807:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 313,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 163,
+ "src": "3817:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 314,
+ "name": "ClaimCase",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1094,
+ "src": "3824:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$",
+ "typeString": "type(enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 315,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "TRANSFER",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3824:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ ],
+ "id": 308,
+ "name": "Claim",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1112,
+ "src": "3779:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$",
+ "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 316,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3779:64:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 317,
+ "nodeType": "EmitStatement",
+ "src": "3774:69:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "33",
+ "id": 318,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3865:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_3_by_1",
+ "typeString": "int_const 3"
+ },
+ "value": "3"
+ },
+ "functionReturnParameters": 167,
+ "id": 319,
+ "nodeType": "Return",
+ "src": "3858:8:0"
+ }
+ ]
+ }
+ },
+ "id": 322,
+ "nodeType": "IfStatement",
+ "src": "3075:802:0",
+ "trueBody": {
+ "id": 268,
+ "nodeType": "Block",
+ "src": "3109:302:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 234,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "3186:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 235,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3186:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 236,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3200:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 233,
+ "name": "_mint",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2328
+ ],
+ "referencedDeclaration": 2328,
+ "src": "3180:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 237,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3180:27:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 238,
+ "nodeType": "ExpressionStatement",
+ "src": "3180:27:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 244,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 239,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3221:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 241,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 240,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3227:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3221:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 242,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "parentId",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9,
+ "src": "3221:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 243,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3246:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3221:33:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 245,
+ "nodeType": "ExpressionStatement",
+ "src": "3221:33:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 254,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 246,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3268:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 248,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 247,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3274:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3268:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 249,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "3268:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 252,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "-",
+ "prefix": true,
+ "src": "3296:2:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 251,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3297:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ ],
+ "id": 250,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "3291:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 253,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3291:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3268:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 255,
+ "nodeType": "ExpressionStatement",
+ "src": "3268:31:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 257,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "3324:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 258,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3324:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 259,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3338:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 260,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3346:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 261,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 163,
+ "src": "3356:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 262,
+ "name": "ClaimCase",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1094,
+ "src": "3363:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$",
+ "typeString": "type(enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 263,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "NEW",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3363:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ ],
+ "id": 256,
+ "name": "Claim",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1112,
+ "src": "3318:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$",
+ "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 264,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3318:59:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 265,
+ "nodeType": "EmitStatement",
+ "src": "3313:64:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "32",
+ "id": 266,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3399:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_2_by_1",
+ "typeString": "int_const 2"
+ },
+ "value": "2"
+ },
+ "functionReturnParameters": 167,
+ "id": 267,
+ "nodeType": "Return",
+ "src": "3392:8:0"
+ }
+ ]
+ }
+ },
+ "id": 323,
+ "nodeType": "IfStatement",
+ "src": "2697:1180:0",
+ "trueBody": {
+ "id": 228,
+ "nodeType": "Block",
+ "src": "2757:312:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 202,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 197,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "2779:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 198,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "2791:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 200,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 199,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2797:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2791:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 201,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "parentId",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9,
+ "src": "2791:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2779:34:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a20496e76616c696420706172656e742068617368",
+ "id": 203,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2815:27:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6",
+ "typeString": "literal_string \"AKAP: Invalid parent hash\""
+ },
+ "value": "AKAP: Invalid parent hash"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6",
+ "typeString": "literal_string \"AKAP: Invalid parent hash\""
+ }
+ ],
+ "id": 196,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "2771:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 204,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2771:72:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 205,
+ "nodeType": "ExpressionStatement",
+ "src": "2771:72:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 214,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 206,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "2922:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 208,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 207,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2928:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2922:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 209,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "2922:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 212,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "-",
+ "prefix": true,
+ "src": "2950:2:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 211,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2951:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ ],
+ "id": 210,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2945:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 213,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2945:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2922:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 215,
+ "nodeType": "ExpressionStatement",
+ "src": "2922:31:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 217,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "2978:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 218,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2978:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 219,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2992:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 220,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3000:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 221,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 163,
+ "src": "3010:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 222,
+ "name": "ClaimCase",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1094,
+ "src": "3017:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$",
+ "typeString": "type(enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 223,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "RECLAIM",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3017:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ ],
+ "id": 216,
+ "name": "Claim",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1112,
+ "src": "2972:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$",
+ "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 224,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2972:63:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 225,
+ "nodeType": "EmitStatement",
+ "src": "2967:68:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 226,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3057:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "functionReturnParameters": 167,
+ "id": 227,
+ "nodeType": "Return",
+ "src": "3050:8:0"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 324,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3915:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "functionReturnParameters": 167,
+ "id": 325,
+ "nodeType": "Return",
+ "src": "3908:8:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 327,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "claim",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 164,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 161,
+ "name": "parentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "2144:13:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 160,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "2144:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 163,
+ "name": "label",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "2159:20:0",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 162,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2159:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2143:37:0"
+ },
+ "returnParameters": {
+ "id": 167,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 166,
+ "name": "status",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "2199:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 165,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "2199:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2198:13:0"
+ },
+ "scope": 564,
+ "src": "2129:1794:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1162,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 342,
+ "nodeType": "Block",
+ "src": "3987:53:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 340,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 335,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 329,
+ "src": "4012:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 334,
+ "name": "_exists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1924,
+ "src": "4004:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (uint256) view returns (bool)"
+ }
+ },
+ "id": 336,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4004:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 339,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 337,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 329,
+ "src": "4023:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 338,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4032:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "4023:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "4004:29:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 333,
+ "id": 341,
+ "nodeType": "Return",
+ "src": "3997:36:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 343,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "exists",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 330,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 329,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 343,
+ "src": "3945:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 328,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "3945:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3944:13:0"
+ },
+ "returnParameters": {
+ "id": 333,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 332,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 343,
+ "src": "3981:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 331,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "3981:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3980:6:0"
+ },
+ "scope": 564,
+ "src": "3929:111:0",
+ "stateMutability": "view",
+ "superFunction": 1169,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 356,
+ "nodeType": "Block",
+ "src": "4115:64:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 351,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "4151:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 352,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4151:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 353,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 345,
+ "src": "4165:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 350,
+ "name": "_isApprovedOrOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1963,
+ "src": "4132:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) view returns (bool)"
+ }
+ },
+ "id": 354,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4132:40:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 349,
+ "id": 355,
+ "nodeType": "Return",
+ "src": "4125:47:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 357,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isApprovedOrOwner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 346,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 345,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "4073:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 344,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4073:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4072:13:0"
+ },
+ "returnParameters": {
+ "id": 349,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 348,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "4109:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 347,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "4109:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4108:6:0"
+ },
+ "scope": 564,
+ "src": "4046:133:0",
+ "stateMutability": "view",
+ "superFunction": 1176,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 372,
+ "nodeType": "Block",
+ "src": "4266:46:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 367,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4283:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 369,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 368,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 359,
+ "src": "4289:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4283:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 370,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "parentId",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9,
+ "src": "4283:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 366,
+ "id": 371,
+ "nodeType": "Return",
+ "src": "4276:29:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 373,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 362,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 359,
+ "src": "4243:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 363,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 361,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4230:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4230:20:0"
+ }
+ ],
+ "name": "parentOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 360,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 359,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 373,
+ "src": "4203:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 358,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4203:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4202:13:0"
+ },
+ "returnParameters": {
+ "id": 366,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 365,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 373,
+ "src": "4260:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 364,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4260:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4259:6:0"
+ },
+ "scope": 564,
+ "src": "4185:127:0",
+ "stateMutability": "view",
+ "superFunction": 1190,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 388,
+ "nodeType": "Block",
+ "src": "4399:44:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 383,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4416:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 385,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 384,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 375,
+ "src": "4422:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4416:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 386,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "4416:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 382,
+ "id": 387,
+ "nodeType": "Return",
+ "src": "4409:27:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 389,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 378,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 375,
+ "src": "4376:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 379,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 377,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4363:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4363:20:0"
+ }
+ ],
+ "name": "expiryOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 376,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 375,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 389,
+ "src": "4336:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 374,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4336:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4335:13:0"
+ },
+ "returnParameters": {
+ "id": 382,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 381,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 389,
+ "src": "4393:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 380,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4393:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4392:6:0"
+ },
+ "scope": 564,
+ "src": "4318:125:0",
+ "stateMutability": "view",
+ "superFunction": 1197,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 404,
+ "nodeType": "Block",
+ "src": "4529:45:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 399,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4546:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 401,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 400,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 391,
+ "src": "4552:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4546:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 402,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "seeAlso",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 13,
+ "src": "4546:21:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 398,
+ "id": 403,
+ "nodeType": "Return",
+ "src": "4539:28:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 405,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 394,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 391,
+ "src": "4506:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 395,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 393,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4493:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4493:20:0"
+ }
+ ],
+ "name": "seeAlso",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 392,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 391,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 405,
+ "src": "4466:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 390,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4466:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4465:13:0"
+ },
+ "returnParameters": {
+ "id": 398,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 397,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 405,
+ "src": "4523:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 396,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4523:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4522:6:0"
+ },
+ "scope": 564,
+ "src": "4449:125:0",
+ "stateMutability": "view",
+ "superFunction": 1204,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 420,
+ "nodeType": "Block",
+ "src": "4666:48:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 415,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4683:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 417,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 416,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 407,
+ "src": "4689:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4683:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 418,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "seeAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 15,
+ "src": "4683:24:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 414,
+ "id": 419,
+ "nodeType": "Return",
+ "src": "4676:31:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 421,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 410,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 407,
+ "src": "4640:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 411,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 409,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4627:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4627:20:0"
+ }
+ ],
+ "name": "seeAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 408,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 407,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 421,
+ "src": "4600:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 406,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4600:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4599:13:0"
+ },
+ "returnParameters": {
+ "id": 414,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 413,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 421,
+ "src": "4657:7:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 412,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4657:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4656:9:0"
+ },
+ "scope": 564,
+ "src": "4580:134:0",
+ "stateMutability": "view",
+ "superFunction": 1211,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 436,
+ "nodeType": "Block",
+ "src": "4809:46:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 431,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4826:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 433,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 432,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 423,
+ "src": "4832:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4826:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 434,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodeBody",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 17,
+ "src": "4826:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "functionReturnParameters": 430,
+ "id": 435,
+ "nodeType": "Return",
+ "src": "4819:29:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 437,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 426,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 423,
+ "src": "4778:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 427,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 425,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4765:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4765:20:0"
+ }
+ ],
+ "name": "nodeBody",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 424,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 423,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 437,
+ "src": "4738:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 422,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4738:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4737:13:0"
+ },
+ "returnParameters": {
+ "id": 430,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 429,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 437,
+ "src": "4795:12:0",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 428,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "4795:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4794:14:0"
+ },
+ "scope": 564,
+ "src": "4720:135:0",
+ "stateMutability": "view",
+ "superFunction": 1218,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 460,
+ "nodeType": "Block",
+ "src": "4924:118:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 450,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 445,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4934:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 447,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 446,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 439,
+ "src": "4940:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4934:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 448,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "4934:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 449,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2879,
+ "src": "4957:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "4934:26:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 451,
+ "nodeType": "ExpressionStatement",
+ "src": "4934:26:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 453,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "4992:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 454,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4992:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 455,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 439,
+ "src": "5006:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 456,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5014:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 457,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "EXPIRY",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5014:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 452,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "4975:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 458,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4975:60:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 459,
+ "nodeType": "EmitStatement",
+ "src": "4970:65:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 461,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 442,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 439,
+ "src": "4916:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 443,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 441,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "4903:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4903:20:0"
+ }
+ ],
+ "name": "expireNode",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 440,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 439,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 461,
+ "src": "4881:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 438,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4881:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4880:13:0"
+ },
+ "returnParameters": {
+ "id": 444,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4924:0:0"
+ },
+ "scope": 564,
+ "src": "4861:181:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1230,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 486,
+ "nodeType": "Block",
+ "src": "5123:123:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 476,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 471,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "5133:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 473,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 472,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 463,
+ "src": "5139:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5133:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 474,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "seeAlso",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 13,
+ "src": "5133:21:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 475,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 465,
+ "src": "5157:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5133:29:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 477,
+ "nodeType": "ExpressionStatement",
+ "src": "5133:29:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 479,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "5194:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 480,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5194:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 481,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 463,
+ "src": "5208:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 482,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5216:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 483,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "SEE_ALSO",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5216:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 478,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "5177:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 484,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5177:62:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 485,
+ "nodeType": "EmitStatement",
+ "src": "5172:67:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 487,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 468,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 463,
+ "src": "5115:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 469,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 467,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "5102:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5102:20:0"
+ }
+ ],
+ "name": "setSeeAlso",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 466,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 463,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 487,
+ "src": "5068:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 462,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5068:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 465,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 487,
+ "src": "5081:10:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 464,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5081:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5067:25:0"
+ },
+ "returnParameters": {
+ "id": 470,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5123:0:0"
+ },
+ "scope": 564,
+ "src": "5048:198:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1237,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 512,
+ "nodeType": "Block",
+ "src": "5333:129:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 502,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 497,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "5343:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 499,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 498,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 489,
+ "src": "5349:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5343:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 500,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "seeAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 15,
+ "src": "5343:24:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 501,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 491,
+ "src": "5370:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "5343:32:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 503,
+ "nodeType": "ExpressionStatement",
+ "src": "5343:32:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 505,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "5407:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 506,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5407:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 507,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 489,
+ "src": "5421:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 508,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5429:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 509,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "SEE_ADDRESS",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5429:25:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 504,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "5390:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 510,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5390:65:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 511,
+ "nodeType": "EmitStatement",
+ "src": "5385:70:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 513,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 494,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 489,
+ "src": "5325:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 495,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 493,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "5312:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5312:20:0"
+ }
+ ],
+ "name": "setSeeAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 492,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 489,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 513,
+ "src": "5275:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 488,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5275:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 491,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 513,
+ "src": "5288:13:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 490,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5288:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5274:28:0"
+ },
+ "returnParameters": {
+ "id": 496,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5333:0:0"
+ },
+ "scope": 564,
+ "src": "5252:210:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1244,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 538,
+ "nodeType": "Block",
+ "src": "5554:125:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 528,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 523,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "5564:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 525,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 524,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 515,
+ "src": "5570:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5564:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 526,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "nodeBody",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 17,
+ "src": "5564:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 527,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 517,
+ "src": "5589:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ "src": "5564:30:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 529,
+ "nodeType": "ExpressionStatement",
+ "src": "5564:30:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 531,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "5626:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 532,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5626:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 533,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 515,
+ "src": "5640:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 534,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5648:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 535,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "NODE_BODY",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5648:23:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 530,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "5609:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 536,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5609:63:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 537,
+ "nodeType": "EmitStatement",
+ "src": "5604:68:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 539,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 520,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 515,
+ "src": "5546:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 521,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 519,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "5533:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5533:20:0"
+ }
+ ],
+ "name": "setNodeBody",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 518,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 515,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 539,
+ "src": "5489:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 514,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5489:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 517,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 539,
+ "src": "5502:20:0",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 516,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5502:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5488:35:0"
+ },
+ "returnParameters": {
+ "id": 522,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5554:0:0"
+ },
+ "scope": 564,
+ "src": "5468:211:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1251,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 562,
+ "nodeType": "Block",
+ "src": "5770:120:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 550,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 541,
+ "src": "5793:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 551,
+ "name": "uri",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 543,
+ "src": "5801:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "id": 549,
+ "name": "_setTokenURI",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2643,
+ "src": "5780:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (uint256,string memory)"
+ }
+ },
+ "id": 552,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5780:25:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 553,
+ "nodeType": "ExpressionStatement",
+ "src": "5780:25:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 555,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "5837:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 556,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5837:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 557,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 541,
+ "src": "5851:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 558,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5859:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 559,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "TOKEN_URI",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5859:23:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 554,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "5820:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 560,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5820:63:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 561,
+ "nodeType": "EmitStatement",
+ "src": "5815:68:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 563,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 546,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 541,
+ "src": "5762:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 547,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 545,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "5749:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5749:20:0"
+ }
+ ],
+ "name": "setTokenURI",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 544,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 541,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 563,
+ "src": "5706:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 540,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5706:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 543,
+ "name": "uri",
+ "nodeType": "VariableDeclaration",
+ "scope": 563,
+ "src": "5719:19:0",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 542,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "5719:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5705:34:0"
+ },
+ "returnParameters": {
+ "id": 548,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5770:0:0"
+ },
+ "scope": 564,
+ "src": "5685:205:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1258,
+ "visibility": "external"
+ }
+ ],
+ "scope": 565,
+ "src": "737:5155:0"
+ }
+ ],
+ "src": "627:5265:0"
+ },
+ "legacyAST": {
+ "absolutePath": "/private/tmp/eth/akap/contracts/AKAF.sol",
+ "exportedSymbols": {
+ "AKAF": [
+ 564
+ ]
+ },
+ "id": 565,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".0"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "627:23:0"
+ },
+ {
+ "absolutePath": "/private/tmp/eth/akap/contracts/IAKAP.sol",
+ "file": "./IAKAP.sol",
+ "id": 2,
+ "nodeType": "ImportDirective",
+ "scope": 565,
+ "sourceUnit": 1319,
+ "src": "652:21:0",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Full.sol",
+ "file": "@openzeppelin/contracts/token/ERC721/ERC721Full.sol",
+ "id": 3,
+ "nodeType": "ImportDirective",
+ "scope": 565,
+ "sourceUnit": 2546,
+ "src": "674:61:0",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 4,
+ "name": "IAKAP",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 1318,
+ "src": "754:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAKAP_$1318",
+ "typeString": "contract IAKAP"
+ }
+ },
+ "id": 5,
+ "nodeType": "InheritanceSpecifier",
+ "src": "754:5:0"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 6,
+ "name": "ERC721Full",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 2545,
+ "src": "761:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ERC721Full_$2545",
+ "typeString": "contract ERC721Full"
+ }
+ },
+ "id": 7,
+ "nodeType": "InheritanceSpecifier",
+ "src": "761:10:0"
+ }
+ ],
+ "contractDependencies": [
+ 1318,
+ 1476,
+ 1486,
+ 2184,
+ 2521,
+ 2545,
+ 2674,
+ 2777,
+ 2804,
+ 2827
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 564,
+ "linearizedBaseContracts": [
+ 564,
+ 2545,
+ 2674,
+ 2827,
+ 2521,
+ 2804,
+ 2184,
+ 2777,
+ 1476,
+ 1486,
+ 1318
+ ],
+ "name": "AKAF",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "canonicalName": "AKAF.Node",
+ "id": 18,
+ "members": [
+ {
+ "constant": false,
+ "id": 9,
+ "name": "parentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "800:13:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 8,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "800:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 11,
+ "name": "expiry",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "823:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 10,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "823:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 13,
+ "name": "seeAlso",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "844:12:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 12,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "844:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 15,
+ "name": "seeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "866:18:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 14,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "866:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 17,
+ "name": "nodeBody",
+ "nodeType": "VariableDeclaration",
+ "scope": 18,
+ "src": "894:14:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 16,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "894:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Node",
+ "nodeType": "StructDefinition",
+ "scope": 564,
+ "src": "778:137:0",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 22,
+ "name": "nodes",
+ "nodeType": "VariableDeclaration",
+ "scope": 564,
+ "src": "921:35:0",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node)"
+ },
+ "typeName": {
+ "id": 21,
+ "keyType": {
+ "id": 19,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "929:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "921:21:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node)"
+ },
+ "valueType": {
+ "contractScope": null,
+ "id": 20,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 18,
+ "src": "937:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage_ptr",
+ "typeString": "struct AKAF.Node"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 59,
+ "nodeType": "Block",
+ "src": "1027:252:0",
+ "statements": [
+ {
+ "assignments": [
+ 30
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 30,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 59,
+ "src": "1110:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 29,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1110:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 32,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 31,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1124:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1110:15:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 34,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "1141:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 35,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1141:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 36,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 30,
+ "src": "1155:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 33,
+ "name": "_mint",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2328
+ ],
+ "referencedDeclaration": 2328,
+ "src": "1135:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 37,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1135:27:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 38,
+ "nodeType": "ExpressionStatement",
+ "src": "1135:27:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 47,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 39,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "1172:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 41,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 40,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 30,
+ "src": "1178:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1172:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 42,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "1172:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 45,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "-",
+ "prefix": true,
+ "src": "1200:2:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 44,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1201:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ ],
+ "id": 43,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1195:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 46,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1195:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1172:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 48,
+ "nodeType": "ExpressionStatement",
+ "src": "1172:31:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 50,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "1224:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 51,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1224:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 52,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 30,
+ "src": "1238:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 53,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 30,
+ "src": "1246:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "",
+ "id": 54,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1254:2:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
+ "typeString": "literal_string \"\""
+ },
+ "value": ""
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 55,
+ "name": "ClaimCase",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1094,
+ "src": "1258:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$",
+ "typeString": "type(enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 56,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "NEW",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1258:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
+ "typeString": "literal_string \"\""
+ },
+ {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ ],
+ "id": 49,
+ "name": "Claim",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1112,
+ "src": "1218:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$",
+ "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 57,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1218:54:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 58,
+ "nodeType": "EmitStatement",
+ "src": "1213:59:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 60,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "414b4120466f7265766572205265676973747279",
+ "id": 25,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "988:22:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_cae7ceeb2ebe151f1c27619f938a56491425da9af3053c9e79e96783851bd6e3",
+ "typeString": "literal_string \"AKA Forever Registry\""
+ },
+ "value": "AKA Forever Registry"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b4146",
+ "id": 26,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1012:6:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_a508d8c7eae35b3a6e2f5a6804bed7b2f7bf00c46f7af065a48ea5aa52ab21e5",
+ "typeString": "literal_string \"AKAF\""
+ },
+ "value": "AKAF"
+ }
+ ],
+ "id": 27,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 24,
+ "name": "ERC721Full",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2545,
+ "src": "977:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_ERC721Full_$2545_$",
+ "typeString": "type(contract ERC721Full)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "977:42:0"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 23,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "974:2:0"
+ },
+ "returnParameters": {
+ "id": 28,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1027:0:0"
+ },
+ "scope": 564,
+ "src": "963:316:0",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 68,
+ "nodeType": "Block",
+ "src": "1347:34:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 65,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2877,
+ "src": "1364:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 66,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1364:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "functionReturnParameters": 64,
+ "id": 67,
+ "nodeType": "Return",
+ "src": "1357:17:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 69,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_msgSender",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 61,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1304:2:0"
+ },
+ "returnParameters": {
+ "id": 64,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 63,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "1330:15:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ "typeName": {
+ "id": 62,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1330:15:0",
+ "stateMutability": "payable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1329:17:0"
+ },
+ "scope": 564,
+ "src": "1285:96:0",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 85,
+ "nodeType": "Block",
+ "src": "1422:112:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 80,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 75,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 71,
+ "src": "1448:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 74,
+ "name": "_exists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1924,
+ "src": "1440:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (uint256) view returns (bool)"
+ }
+ },
+ "id": 76,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1440:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 79,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 77,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 71,
+ "src": "1459:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 78,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1468:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "1459:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "1440:29:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a206f70657261746f7220717565727920666f72206e6f6e6578697374656e74206e6f6465",
+ "id": 81,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1471:43:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_a658d58523fc6cf084d1dd3125a8fc1b3ad66eb4d398c72b5853657b82ff950b",
+ "typeString": "literal_string \"AKAP: operator query for nonexistent node\""
+ },
+ "value": "AKAP: operator query for nonexistent node"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_a658d58523fc6cf084d1dd3125a8fc1b3ad66eb4d398c72b5853657b82ff950b",
+ "typeString": "literal_string \"AKAP: operator query for nonexistent node\""
+ }
+ ],
+ "id": 73,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "1432:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 82,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1432:83:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 83,
+ "nodeType": "ExpressionStatement",
+ "src": "1432:83:0"
+ },
+ {
+ "id": 84,
+ "nodeType": "PlaceholderStatement",
+ "src": "1526:1:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 86,
+ "name": "onlyExisting",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 72,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 71,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 86,
+ "src": "1409:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 70,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1409:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1408:13:0"
+ },
+ "src": "1387:147:0",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 108,
+ "nodeType": "Block",
+ "src": "1575:163:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 103,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 99,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 92,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 88,
+ "src": "1601:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 91,
+ "name": "_exists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1924,
+ "src": "1593:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (uint256) view returns (bool)"
+ }
+ },
+ "id": 93,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1593:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 95,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "1631:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 96,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1631:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 97,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 88,
+ "src": "1645:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 94,
+ "name": "_isApprovedOrOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1963,
+ "src": "1612:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) view returns (bool)"
+ }
+ },
+ "id": 98,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1612:40:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "1593:59:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 102,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 100,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 88,
+ "src": "1656:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 101,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1665:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "1656:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "1593:73:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a207365742076616c75652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
+ "id": 104,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1668:50:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_267122d712ca03e8a1e34737e2379df35cd276456b17514e34146918d87bc92c",
+ "typeString": "literal_string \"AKAP: set value caller is not owner nor approved\""
+ },
+ "value": "AKAP: set value caller is not owner nor approved"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_267122d712ca03e8a1e34737e2379df35cd276456b17514e34146918d87bc92c",
+ "typeString": "literal_string \"AKAP: set value caller is not owner nor approved\""
+ }
+ ],
+ "id": 90,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "1585:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 105,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1585:134:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 106,
+ "nodeType": "ExpressionStatement",
+ "src": "1585:134:0"
+ },
+ {
+ "id": 107,
+ "nodeType": "PlaceholderStatement",
+ "src": "1730:1:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 109,
+ "name": "onlyApproved",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 89,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 88,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 109,
+ "src": "1562:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 87,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1562:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1561:13:0"
+ },
+ "src": "1540:198:0",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 158,
+ "nodeType": "Block",
+ "src": "1825:298:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 127,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 122,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 119,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 113,
+ "src": "1843:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 120,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1843:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 121,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1859:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "1843:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 126,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 123,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 113,
+ "src": "1864:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 124,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1864:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "3332",
+ "id": 125,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1880:2:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_32_by_1",
+ "typeString": "int_const 32"
+ },
+ "value": "32"
+ },
+ "src": "1864:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "1843:39:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a20496e76616c6964206c6162656c206c656e677468",
+ "id": 128,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1884:28:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_00918a32a10d2b64eddc50bddc5eb424a8dd1297b66da0875142c7f852ae50b5",
+ "typeString": "literal_string \"AKAP: Invalid label length\""
+ },
+ "value": "AKAP: Invalid label length"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_00918a32a10d2b64eddc50bddc5eb424a8dd1297b66da0875142c7f852ae50b5",
+ "typeString": "literal_string \"AKAP: Invalid label length\""
+ }
+ ],
+ "id": 118,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "1835:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 129,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1835:78:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 130,
+ "nodeType": "ExpressionStatement",
+ "src": "1835:78:0"
+ },
+ {
+ "assignments": [
+ 132
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 132,
+ "name": "labelHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 158,
+ "src": "1924:17:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 131,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1924:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 136,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 134,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 113,
+ "src": "1954:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 133,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2871,
+ "src": "1944:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 135,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1944:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1924:36:0"
+ },
+ {
+ "assignments": [
+ 138
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 138,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 158,
+ "src": "1970:14:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 137,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1970:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 146,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 142,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 111,
+ "src": "2008:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 143,
+ "name": "labelHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 132,
+ "src": "2018:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 140,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2864,
+ "src": "1997:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 141,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encode",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1997:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 144,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1997:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 139,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2871,
+ "src": "1987:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 145,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1987:42:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1970:59:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 150,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 148,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 138,
+ "src": "2048:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 149,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2057:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "2048:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a20496e76616c6964206e6f64652068617368",
+ "id": 151,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2060:25:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_f83c7c02ea33e77031e907158a5c8c3333335ada800bb7480d52a6ecfa1f04e2",
+ "typeString": "literal_string \"AKAP: Invalid node hash\""
+ },
+ "value": "AKAP: Invalid node hash"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_f83c7c02ea33e77031e907158a5c8c3333335ada800bb7480d52a6ecfa1f04e2",
+ "typeString": "literal_string \"AKAP: Invalid node hash\""
+ }
+ ],
+ "id": 147,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "2040:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 152,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2040:46:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 153,
+ "nodeType": "ExpressionStatement",
+ "src": "2040:46:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 155,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 138,
+ "src": "2109:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 154,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2104:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 156,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2104:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 117,
+ "id": 157,
+ "nodeType": "Return",
+ "src": "2097:19:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 159,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hashOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 114,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 111,
+ "name": "parentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 159,
+ "src": "1760:13:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 110,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1760:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 113,
+ "name": "label",
+ "nodeType": "VariableDeclaration",
+ "scope": 159,
+ "src": "1775:18:0",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 112,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1775:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1759:35:0"
+ },
+ "returnParameters": {
+ "id": 117,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 116,
+ "name": "id",
+ "nodeType": "VariableDeclaration",
+ "scope": 159,
+ "src": "1816:7:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 115,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "1816:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1815:9:0"
+ },
+ "scope": 564,
+ "src": "1744:379:0",
+ "stateMutability": "pure",
+ "superFunction": 1153,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 326,
+ "nodeType": "Block",
+ "src": "2212:1711:0",
+ "statements": [
+ {
+ "assignments": [
+ 169
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 169,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 326,
+ "src": "2532:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 168,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "2532:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 174,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 171,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "2553:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 172,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 163,
+ "src": "2563:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "id": 170,
+ "name": "hashOf",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 159
+ ],
+ "referencedDeclaration": 159,
+ "src": "2546:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
+ "typeString": "function (uint256,bytes memory) pure returns (uint256)"
+ }
+ },
+ "id": 173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2546:23:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2532:37:0"
+ },
+ {
+ "assignments": [
+ 176
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 176,
+ "name": "isParentOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 326,
+ "src": "2580:18:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 175,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "2580:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 182,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 178,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "2620:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 179,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2620:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 180,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "2634:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 177,
+ "name": "_isApprovedOrOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1963,
+ "src": "2601:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) view returns (bool)"
+ }
+ },
+ "id": 181,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2601:42:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2580:63:0"
+ },
+ {
+ "assignments": [
+ 184
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 184,
+ "name": "nodeExists",
+ "nodeType": "VariableDeclaration",
+ "scope": 326,
+ "src": "2653:15:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 183,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "2653:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 188,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 186,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2679:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 185,
+ "name": "_exists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1924,
+ "src": "2671:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (uint256) view returns (bool)"
+ }
+ },
+ "id": 187,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2671:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2653:33:0"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 195,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 189,
+ "name": "nodeExists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 184,
+ "src": "2701:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 191,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "2734:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 192,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2734:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 193,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2748:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 190,
+ "name": "_isApprovedOrOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1963,
+ "src": "2715:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) view returns (bool)"
+ }
+ },
+ "id": 194,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2715:40:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "2701:54:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 232,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 230,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "3079:11:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 229,
+ "name": "nodeExists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 184,
+ "src": "3080:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 231,
+ "name": "isParentOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 176,
+ "src": "3094:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "3079:28:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 278,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 276,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 269,
+ "name": "nodeExists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 184,
+ "src": "3421:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 275,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 270,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3435:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 272,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 271,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3441:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3435:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 273,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "3435:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 274,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2879,
+ "src": "3459:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3435:27:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "3421:41:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 277,
+ "name": "isParentOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 176,
+ "src": "3466:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "3421:58:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 321,
+ "nodeType": "IfStatement",
+ "src": "3417:460:0",
+ "trueBody": {
+ "id": 320,
+ "nodeType": "Block",
+ "src": "3481:396:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 285,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 280,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3503:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 281,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3515:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 283,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 282,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3521:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3515:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 284,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "parentId",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9,
+ "src": "3515:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3503:34:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a20496e76616c696420706172656e742068617368",
+ "id": 286,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3539:27:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6",
+ "typeString": "literal_string \"AKAP: Invalid parent hash\""
+ },
+ "value": "AKAP: Invalid parent hash"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6",
+ "typeString": "literal_string \"AKAP: Invalid parent hash\""
+ }
+ ],
+ "id": 279,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "3495:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 287,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3495:72:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 288,
+ "nodeType": "ExpressionStatement",
+ "src": "3495:72:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 291,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3685:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 290,
+ "name": "ownerOf",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1720
+ ],
+ "referencedDeclaration": 1720,
+ "src": "3677:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
+ "typeString": "function (uint256) view returns (address)"
+ }
+ },
+ "id": 292,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3677:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 293,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "3694:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 294,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3694:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 295,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3708:6:0",
+ "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": 289,
+ "name": "_transferFrom",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2304
+ ],
+ "referencedDeclaration": 2304,
+ "src": "3663:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 296,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3663:52:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 297,
+ "nodeType": "ExpressionStatement",
+ "src": "3663:52:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 306,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 298,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3729:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 300,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 299,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3735:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3729:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 301,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "3729:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 304,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "-",
+ "prefix": true,
+ "src": "3757:2:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 303,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3758:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ ],
+ "id": 302,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "3752:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 305,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3752:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3729:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 307,
+ "nodeType": "ExpressionStatement",
+ "src": "3729:31:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 309,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "3785:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 310,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3785:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 311,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3799:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 312,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3807:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 313,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 163,
+ "src": "3817:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 314,
+ "name": "ClaimCase",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1094,
+ "src": "3824:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$",
+ "typeString": "type(enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 315,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "TRANSFER",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3824:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ ],
+ "id": 308,
+ "name": "Claim",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1112,
+ "src": "3779:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$",
+ "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 316,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3779:64:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 317,
+ "nodeType": "EmitStatement",
+ "src": "3774:69:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "33",
+ "id": 318,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3865:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_3_by_1",
+ "typeString": "int_const 3"
+ },
+ "value": "3"
+ },
+ "functionReturnParameters": 167,
+ "id": 319,
+ "nodeType": "Return",
+ "src": "3858:8:0"
+ }
+ ]
+ }
+ },
+ "id": 322,
+ "nodeType": "IfStatement",
+ "src": "3075:802:0",
+ "trueBody": {
+ "id": 268,
+ "nodeType": "Block",
+ "src": "3109:302:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 234,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "3186:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 235,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3186:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 236,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3200:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 233,
+ "name": "_mint",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2328
+ ],
+ "referencedDeclaration": 2328,
+ "src": "3180:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 237,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3180:27:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 238,
+ "nodeType": "ExpressionStatement",
+ "src": "3180:27:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 244,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 239,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3221:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 241,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 240,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3227:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3221:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 242,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "parentId",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9,
+ "src": "3221:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 243,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3246:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3221:33:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 245,
+ "nodeType": "ExpressionStatement",
+ "src": "3221:33:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 254,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 246,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3268:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 248,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 247,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3274:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3268:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 249,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "3268:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 252,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "-",
+ "prefix": true,
+ "src": "3296:2:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 251,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3297:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ ],
+ "id": 250,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "3291:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 253,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3291:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3268:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 255,
+ "nodeType": "ExpressionStatement",
+ "src": "3268:31:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 257,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "3324:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 258,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3324:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 259,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "3338:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 260,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3346:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 261,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 163,
+ "src": "3356:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 262,
+ "name": "ClaimCase",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1094,
+ "src": "3363:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$",
+ "typeString": "type(enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 263,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "NEW",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3363:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ ],
+ "id": 256,
+ "name": "Claim",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1112,
+ "src": "3318:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$",
+ "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 264,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3318:59:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 265,
+ "nodeType": "EmitStatement",
+ "src": "3313:64:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "32",
+ "id": 266,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3399:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_2_by_1",
+ "typeString": "int_const 2"
+ },
+ "value": "2"
+ },
+ "functionReturnParameters": 167,
+ "id": 267,
+ "nodeType": "Return",
+ "src": "3392:8:0"
+ }
+ ]
+ }
+ },
+ "id": 323,
+ "nodeType": "IfStatement",
+ "src": "2697:1180:0",
+ "trueBody": {
+ "id": 228,
+ "nodeType": "Block",
+ "src": "2757:312:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 202,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 197,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "2779:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 198,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "2791:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 200,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 199,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2797:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2791:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 201,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "parentId",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9,
+ "src": "2791:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2779:34:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "414b41503a20496e76616c696420706172656e742068617368",
+ "id": 203,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2815:27:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6",
+ "typeString": "literal_string \"AKAP: Invalid parent hash\""
+ },
+ "value": "AKAP: Invalid parent hash"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6",
+ "typeString": "literal_string \"AKAP: Invalid parent hash\""
+ }
+ ],
+ "id": 196,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 2880,
+ 2881
+ ],
+ "referencedDeclaration": 2881,
+ "src": "2771:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 204,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2771:72:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 205,
+ "nodeType": "ExpressionStatement",
+ "src": "2771:72:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 214,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 206,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "2922:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 208,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 207,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2928:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2922:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 209,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "2922:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 212,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "-",
+ "prefix": true,
+ "src": "2950:2:0",
+ "subExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 211,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2951:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_minus_1_by_1",
+ "typeString": "int_const -1"
+ }
+ ],
+ "id": 210,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2945:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 213,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2945:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2922:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 215,
+ "nodeType": "ExpressionStatement",
+ "src": "2922:31:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 217,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "2978:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 218,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2978:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 219,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "2992:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 220,
+ "name": "parentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "3000:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 221,
+ "name": "label",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 163,
+ "src": "3010:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 222,
+ "name": "ClaimCase",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1094,
+ "src": "3017:9:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$",
+ "typeString": "type(enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 223,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "RECLAIM",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3017:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_enum$_ClaimCase_$1094",
+ "typeString": "enum IAKAP.ClaimCase"
+ }
+ ],
+ "id": 216,
+ "name": "Claim",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1112,
+ "src": "2972:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$",
+ "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)"
+ }
+ },
+ "id": 224,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2972:63:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 225,
+ "nodeType": "EmitStatement",
+ "src": "2967:68:0"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 226,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3057:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "functionReturnParameters": 167,
+ "id": 227,
+ "nodeType": "Return",
+ "src": "3050:8:0"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 324,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3915:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "functionReturnParameters": 167,
+ "id": 325,
+ "nodeType": "Return",
+ "src": "3908:8:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 327,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "claim",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 164,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 161,
+ "name": "parentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "2144:13:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 160,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "2144:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 163,
+ "name": "label",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "2159:20:0",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 162,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2159:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2143:37:0"
+ },
+ "returnParameters": {
+ "id": 167,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 166,
+ "name": "status",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "2199:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 165,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "2199:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2198:13:0"
+ },
+ "scope": 564,
+ "src": "2129:1794:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1162,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 342,
+ "nodeType": "Block",
+ "src": "3987:53:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 340,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 335,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 329,
+ "src": "4012:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 334,
+ "name": "_exists",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1924,
+ "src": "4004:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (uint256) view returns (bool)"
+ }
+ },
+ "id": 336,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4004:15:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 339,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 337,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 329,
+ "src": "4023:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 338,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4032:1:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "4023:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "4004:29:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 333,
+ "id": 341,
+ "nodeType": "Return",
+ "src": "3997:36:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 343,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "exists",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 330,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 329,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 343,
+ "src": "3945:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 328,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "3945:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3944:13:0"
+ },
+ "returnParameters": {
+ "id": 333,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 332,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 343,
+ "src": "3981:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 331,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "3981:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3980:6:0"
+ },
+ "scope": 564,
+ "src": "3929:111:0",
+ "stateMutability": "view",
+ "superFunction": 1169,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 356,
+ "nodeType": "Block",
+ "src": "4115:64:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 351,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "4151:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 352,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4151:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 353,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 345,
+ "src": "4165:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 350,
+ "name": "_isApprovedOrOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1963,
+ "src": "4132:18:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) view returns (bool)"
+ }
+ },
+ "id": 354,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4132:40:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 349,
+ "id": 355,
+ "nodeType": "Return",
+ "src": "4125:47:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 357,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isApprovedOrOwner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 346,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 345,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "4073:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 344,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4073:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4072:13:0"
+ },
+ "returnParameters": {
+ "id": 349,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 348,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "4109:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 347,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "4109:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4108:6:0"
+ },
+ "scope": 564,
+ "src": "4046:133:0",
+ "stateMutability": "view",
+ "superFunction": 1176,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 372,
+ "nodeType": "Block",
+ "src": "4266:46:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 367,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4283:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 369,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 368,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 359,
+ "src": "4289:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4283:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 370,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "parentId",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9,
+ "src": "4283:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 366,
+ "id": 371,
+ "nodeType": "Return",
+ "src": "4276:29:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 373,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 362,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 359,
+ "src": "4243:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 363,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 361,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4230:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4230:20:0"
+ }
+ ],
+ "name": "parentOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 360,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 359,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 373,
+ "src": "4203:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 358,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4203:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4202:13:0"
+ },
+ "returnParameters": {
+ "id": 366,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 365,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 373,
+ "src": "4260:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 364,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4260:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4259:6:0"
+ },
+ "scope": 564,
+ "src": "4185:127:0",
+ "stateMutability": "view",
+ "superFunction": 1190,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 388,
+ "nodeType": "Block",
+ "src": "4399:44:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 383,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4416:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 385,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 384,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 375,
+ "src": "4422:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4416:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 386,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "4416:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 382,
+ "id": 387,
+ "nodeType": "Return",
+ "src": "4409:27:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 389,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 378,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 375,
+ "src": "4376:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 379,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 377,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4363:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4363:20:0"
+ }
+ ],
+ "name": "expiryOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 376,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 375,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 389,
+ "src": "4336:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 374,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4336:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4335:13:0"
+ },
+ "returnParameters": {
+ "id": 382,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 381,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 389,
+ "src": "4393:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 380,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4393:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4392:6:0"
+ },
+ "scope": 564,
+ "src": "4318:125:0",
+ "stateMutability": "view",
+ "superFunction": 1197,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 404,
+ "nodeType": "Block",
+ "src": "4529:45:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 399,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4546:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 401,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 400,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 391,
+ "src": "4552:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4546:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 402,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "seeAlso",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 13,
+ "src": "4546:21:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 398,
+ "id": 403,
+ "nodeType": "Return",
+ "src": "4539:28:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 405,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 394,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 391,
+ "src": "4506:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 395,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 393,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4493:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4493:20:0"
+ }
+ ],
+ "name": "seeAlso",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 392,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 391,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 405,
+ "src": "4466:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 390,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4466:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4465:13:0"
+ },
+ "returnParameters": {
+ "id": 398,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 397,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 405,
+ "src": "4523:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 396,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4523:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4522:6:0"
+ },
+ "scope": 564,
+ "src": "4449:125:0",
+ "stateMutability": "view",
+ "superFunction": 1204,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 420,
+ "nodeType": "Block",
+ "src": "4666:48:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 415,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4683:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 417,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 416,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 407,
+ "src": "4689:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4683:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 418,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "seeAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 15,
+ "src": "4683:24:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 414,
+ "id": 419,
+ "nodeType": "Return",
+ "src": "4676:31:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 421,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 410,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 407,
+ "src": "4640:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 411,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 409,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4627:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4627:20:0"
+ }
+ ],
+ "name": "seeAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 408,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 407,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 421,
+ "src": "4600:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 406,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4600:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4599:13:0"
+ },
+ "returnParameters": {
+ "id": 414,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 413,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 421,
+ "src": "4657:7:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 412,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4657:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4656:9:0"
+ },
+ "scope": 564,
+ "src": "4580:134:0",
+ "stateMutability": "view",
+ "superFunction": 1211,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 436,
+ "nodeType": "Block",
+ "src": "4809:46:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 431,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4826:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 433,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 432,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 423,
+ "src": "4832:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4826:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 434,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodeBody",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 17,
+ "src": "4826:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "functionReturnParameters": 430,
+ "id": 435,
+ "nodeType": "Return",
+ "src": "4819:29:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 437,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 426,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 423,
+ "src": "4778:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 427,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 425,
+ "name": "onlyExisting",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 86,
+ "src": "4765:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4765:20:0"
+ }
+ ],
+ "name": "nodeBody",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 424,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 423,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 437,
+ "src": "4738:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 422,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4738:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4737:13:0"
+ },
+ "returnParameters": {
+ "id": 430,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 429,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 437,
+ "src": "4795:12:0",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 428,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "4795:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4794:14:0"
+ },
+ "scope": 564,
+ "src": "4720:135:0",
+ "stateMutability": "view",
+ "superFunction": 1218,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 460,
+ "nodeType": "Block",
+ "src": "4924:118:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 450,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 445,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "4934:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 447,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 446,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 439,
+ "src": "4940:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4934:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 448,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expiry",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 11,
+ "src": "4934:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 449,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2879,
+ "src": "4957:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "4934:26:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 451,
+ "nodeType": "ExpressionStatement",
+ "src": "4934:26:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 453,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "4992:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 454,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4992:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 455,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 439,
+ "src": "5006:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 456,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5014:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 457,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "EXPIRY",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5014:20:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 452,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "4975:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 458,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4975:60:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 459,
+ "nodeType": "EmitStatement",
+ "src": "4970:65:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 461,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 442,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 439,
+ "src": "4916:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 443,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 441,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "4903:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4903:20:0"
+ }
+ ],
+ "name": "expireNode",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 440,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 439,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 461,
+ "src": "4881:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 438,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "4881:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4880:13:0"
+ },
+ "returnParameters": {
+ "id": 444,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4924:0:0"
+ },
+ "scope": 564,
+ "src": "4861:181:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1230,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 486,
+ "nodeType": "Block",
+ "src": "5123:123:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 476,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 471,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "5133:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 473,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 472,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 463,
+ "src": "5139:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5133:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 474,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "seeAlso",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 13,
+ "src": "5133:21:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 475,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 465,
+ "src": "5157:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5133:29:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 477,
+ "nodeType": "ExpressionStatement",
+ "src": "5133:29:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 479,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "5194:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 480,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5194:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 481,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 463,
+ "src": "5208:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 482,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5216:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 483,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "SEE_ALSO",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5216:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 478,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "5177:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 484,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5177:62:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 485,
+ "nodeType": "EmitStatement",
+ "src": "5172:67:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 487,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 468,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 463,
+ "src": "5115:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 469,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 467,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "5102:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5102:20:0"
+ }
+ ],
+ "name": "setSeeAlso",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 466,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 463,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 487,
+ "src": "5068:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 462,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5068:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 465,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 487,
+ "src": "5081:10:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 464,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5081:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5067:25:0"
+ },
+ "returnParameters": {
+ "id": 470,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5123:0:0"
+ },
+ "scope": 564,
+ "src": "5048:198:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1237,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 512,
+ "nodeType": "Block",
+ "src": "5333:129:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 502,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 497,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "5343:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 499,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 498,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 489,
+ "src": "5349:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5343:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 500,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "seeAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 15,
+ "src": "5343:24:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 501,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 491,
+ "src": "5370:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "5343:32:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 503,
+ "nodeType": "ExpressionStatement",
+ "src": "5343:32:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 505,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "5407:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 506,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5407:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 507,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 489,
+ "src": "5421:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 508,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5429:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 509,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "SEE_ADDRESS",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5429:25:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 504,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "5390:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 510,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5390:65:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 511,
+ "nodeType": "EmitStatement",
+ "src": "5385:70:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 513,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 494,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 489,
+ "src": "5325:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 495,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 493,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "5312:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5312:20:0"
+ }
+ ],
+ "name": "setSeeAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 492,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 489,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 513,
+ "src": "5275:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 488,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5275:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 491,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 513,
+ "src": "5288:13:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 490,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5288:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5274:28:0"
+ },
+ "returnParameters": {
+ "id": 496,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5333:0:0"
+ },
+ "scope": 564,
+ "src": "5252:210:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1244,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 538,
+ "nodeType": "Block",
+ "src": "5554:125:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 528,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 523,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "5564:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$",
+ "typeString": "mapping(uint256 => struct AKAF.Node storage ref)"
+ }
+ },
+ "id": 525,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 524,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 515,
+ "src": "5570:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5564:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$18_storage",
+ "typeString": "struct AKAF.Node storage ref"
+ }
+ },
+ "id": 526,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "nodeBody",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 17,
+ "src": "5564:22:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 527,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 517,
+ "src": "5589:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ "src": "5564:30:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 529,
+ "nodeType": "ExpressionStatement",
+ "src": "5564:30:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 531,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "5626:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 532,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5626:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 533,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 515,
+ "src": "5640:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 534,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5648:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 535,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "NODE_BODY",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5648:23:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 530,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "5609:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 536,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5609:63:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 537,
+ "nodeType": "EmitStatement",
+ "src": "5604:68:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 539,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 520,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 515,
+ "src": "5546:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 521,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 519,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "5533:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5533:20:0"
+ }
+ ],
+ "name": "setNodeBody",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 518,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 515,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 539,
+ "src": "5489:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 514,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5489:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 517,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 539,
+ "src": "5502:20:0",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 516,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5502:5:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5488:35:0"
+ },
+ "returnParameters": {
+ "id": 522,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5554:0:0"
+ },
+ "scope": 564,
+ "src": "5468:211:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1251,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 562,
+ "nodeType": "Block",
+ "src": "5770:120:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 550,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 541,
+ "src": "5793:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 551,
+ "name": "uri",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 543,
+ "src": "5801:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "id": 549,
+ "name": "_setTokenURI",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2643,
+ "src": "5780:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (uint256,string memory)"
+ }
+ },
+ "id": 552,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5780:25:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 553,
+ "nodeType": "ExpressionStatement",
+ "src": "5780:25:0"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 555,
+ "name": "_msgSender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 69,
+ "src": "5837:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
+ "typeString": "function () view returns (address payable)"
+ }
+ },
+ "id": 556,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5837:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 557,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 541,
+ "src": "5851:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 558,
+ "name": "NodeAttribute",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1100,
+ "src": "5859:13:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$",
+ "typeString": "type(enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 559,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "TOKEN_URI",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5859:23:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_enum$_NodeAttribute_$1100",
+ "typeString": "enum IAKAP.NodeAttribute"
+ }
+ ],
+ "id": 554,
+ "name": "AttributeChanged",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1120,
+ "src": "5820:16:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$",
+ "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)"
+ }
+ },
+ "id": 560,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5820:63:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 561,
+ "nodeType": "EmitStatement",
+ "src": "5815:68:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 563,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 546,
+ "name": "nodeId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 541,
+ "src": "5762:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 547,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 545,
+ "name": "onlyApproved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 109,
+ "src": "5749:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$_t_uint256_$",
+ "typeString": "modifier (uint256)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5749:20:0"
+ }
+ ],
+ "name": "setTokenURI",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 544,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 541,
+ "name": "nodeId",
+ "nodeType": "VariableDeclaration",
+ "scope": 563,
+ "src": "5706:11:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 540,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "5706:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 543,
+ "name": "uri",
+ "nodeType": "VariableDeclaration",
+ "scope": 563,
+ "src": "5719:19:0",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 542,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "5719:6:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5705:34:0"
+ },
+ "returnParameters": {
+ "id": 548,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5770:0:0"
+ },
+ "scope": 564,
+ "src": "5685:205:0",
+ "stateMutability": "nonpayable",
+ "superFunction": 1258,
+ "visibility": "external"
+ }
+ ],
+ "scope": 565,
+ "src": "737:5155:0"
+ }
+ ],
+ "src": "627:5265:0"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.23",
+ "updatedAt": "2020-05-13T14:37:55.412Z",
+ "devdoc": {
+ "methods": {
+ "approve(address,uint256)": {
+ "details": "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.",
+ "params": {
+ "to": "address to be approved for the given token ID",
+ "tokenId": "uint256 ID of the token to be approved"
+ }
+ },
+ "balanceOf(address)": {
+ "details": "Gets the balance of the specified address.",
+ "params": {
+ "owner": "address to query the balance of"
+ },
+ "return": "uint256 representing the amount owned by the passed address"
+ },
+ "getApproved(uint256)": {
+ "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.",
+ "params": {
+ "tokenId": "uint256 ID of the token to query the approval of"
+ },
+ "return": "address currently approved for the given token ID"
+ },
+ "isApprovedForAll(address,address)": {
+ "details": "Tells whether an operator is approved by a given owner.",
+ "params": {
+ "operator": "operator address which you want to query the approval of",
+ "owner": "owner address which you want to query the approval of"
+ },
+ "return": "bool whether the given operator is approved by the given owner"
+ },
+ "name()": {
+ "details": "Gets the token name.",
+ "return": "string representing the token name"
+ },
+ "ownerOf(uint256)": {
+ "details": "Gets the owner of the specified token ID.",
+ "params": {
+ "tokenId": "uint256 ID of the token to query the owner of"
+ },
+ "return": "address currently marked as the owner of the given token ID"
+ },
+ "safeTransferFrom(address,address,uint256)": {
+ "details": "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",
+ "params": {
+ "from": "current owner of the token",
+ "to": "address to receive the ownership of the given token ID",
+ "tokenId": "uint256 ID of the token to be transferred"
+ }
+ },
+ "safeTransferFrom(address,address,uint256,bytes)": {
+ "details": "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",
+ "params": {
+ "_data": "bytes data to send along with a safe transfer check",
+ "from": "current owner of the token",
+ "to": "address to receive the ownership of the given token ID",
+ "tokenId": "uint256 ID of the token to be transferred"
+ }
+ },
+ "setApprovalForAll(address,bool)": {
+ "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf.",
+ "params": {
+ "approved": "representing the status of the approval to be set",
+ "to": "operator address to set the approval"
+ }
+ },
+ "supportsInterface(bytes4)": {
+ "details": "See `IERC165.supportsInterface`. * Time complexity O(1), guaranteed to always use less than 30 000 gas."
+ },
+ "symbol()": {
+ "details": "Gets the token symbol.",
+ "return": "string representing the token symbol"
+ },
+ "tokenByIndex(uint256)": {
+ "details": "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.",
+ "params": {
+ "index": "uint256 representing the index to be accessed of the tokens list"
+ },
+ "return": "uint256 token ID at the given index of the tokens list"
+ },
+ "tokenOfOwnerByIndex(address,uint256)": {
+ "details": "Gets the token ID at a given index of the tokens list of the requested owner.",
+ "params": {
+ "index": "uint256 representing the index to be accessed of the requested tokens list",
+ "owner": "address owning the tokens list to be accessed"
+ },
+ "return": "uint256 token ID at the given index of the tokens list owned by the requested address"
+ },
+ "tokenURI(uint256)": {
+ "details": "Returns an URI for a given token ID. Throws if the token ID does not exist. May return an empty string.",
+ "params": {
+ "tokenId": "uint256 ID of the token to query"
+ }
+ },
+ "totalSupply()": {
+ "details": "Gets the total amount of tokens stored by the contract.",
+ "return": "uint256 representing the total amount of tokens"
+ },
+ "transferFrom(address,address,uint256)": {
+ "details": "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.",
+ "params": {
+ "from": "current owner of the token",
+ "to": "address to receive the ownership of the given token ID",
+ "tokenId": "uint256 ID of the token to be transferred"
+ }
+ }
+ }
+ },
+ "userdoc": {
+ "methods": {}
+ }
+}
\ No newline at end of file
diff --git a/build/contracts/IAKAP.json b/build/contracts/IAKAP.json
index b05a8ad..56e5fc9 100644
--- a/build/contracts/IAKAP.json
+++ b/build/contracts/IAKAP.json
@@ -6005,7 +6005,28 @@
"name": "solc",
"version": "0.5.12+commit.7709ece9.Emscripten.clang"
},
- "networks": {},
+ "networks": {
+ "1": {
+ "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349",
+ "transactionHash": "0x8a1c2b27f7e1d4bfd4793e764337c1c253af79f803a6f113558cabb51c625899"
+ },
+ "3": {
+ "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349",
+ "transactionHash": "0x66308ba90a40d3e29ee6f9cca0ec85f871cd0d383cf340c21e43686014f64aef"
+ },
+ "4": {
+ "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349",
+ "transactionHash": "0x66308ba90a40d3e29ee6f9cca0ec85f871cd0d383cf340c21e43686014f64aef"
+ },
+ "5": {
+ "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349",
+ "transactionHash": "0x66308ba90a40d3e29ee6f9cca0ec85f871cd0d383cf340c21e43686014f64aef"
+ },
+ "42": {
+ "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349",
+ "transactionHash": "0x66308ba90a40d3e29ee6f9cca0ec85f871cd0d383cf340c21e43686014f64aef"
+ }
+ },
"schemaVersion": "3.0.19",
"updatedAt": "2020-01-18T12:39:58.041Z",
"devdoc": {
diff --git a/contracts/AKAF.sol b/contracts/AKAF.sol
new file mode 100644
index 0000000..a3d401b
--- /dev/null
+++ b/contracts/AKAF.sol
@@ -0,0 +1,161 @@
+// Copyright (C) 2019 Christian Felde
+// Copyright (C) 2019 Mohamed Elshami
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+
+// http://www.apache.org/licenses/LICENSE-2.0
+
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+pragma solidity ^0.5.0;
+
+import "./IAKAP.sol";
+import "@openzeppelin/contracts/token/ERC721/ERC721Full.sol";
+
+contract AKAF is IAKAP, ERC721Full {
+ struct Node {
+ uint parentId;
+ uint expiry;
+ uint seeAlso;
+ address seeAddress;
+ bytes nodeBody;
+ }
+
+ mapping(uint => Node) private nodes;
+
+ constructor() ERC721Full("AKA Forever Registry", "AKAF") public {
+ // Create the special root node and assigned msg.sender as owner
+ uint nodeId = 0;
+ _mint(_msgSender(), nodeId);
+ nodes[nodeId].expiry = uint(-1);
+ emit Claim(_msgSender(), nodeId, nodeId, "", ClaimCase.NEW);
+ }
+
+ function _msgSender() internal view returns (address payable) {
+ return msg.sender;
+ }
+
+ modifier onlyExisting(uint nodeId) {
+ require(_exists(nodeId) && nodeId > 0, "AKAP: operator query for nonexistent node");
+
+ _;
+ }
+
+ modifier onlyApproved(uint nodeId) {
+ require(_exists(nodeId) && _isApprovedOrOwner(_msgSender(), nodeId) && nodeId > 0, "AKAP: set value caller is not owner nor approved");
+
+ _;
+ }
+
+ function hashOf(uint parentId, bytes memory label) public pure returns (uint id) {
+ require(label.length >= 1 && label.length <= 32, "AKAP: Invalid label length");
+
+ bytes32 labelHash = keccak256(label);
+ bytes32 nodeId = keccak256(abi.encode(parentId, labelHash));
+
+ require(nodeId > 0, "AKAP: Invalid node hash");
+
+ return uint(nodeId);
+ }
+
+ function claim(uint parentId, bytes calldata label) external returns (uint status) {
+ // Claim logic is as found in AKAP, but with an expiry timestamp set to "forever".
+ // Owners of a node on an AKAF contract does hence not need to reclaim their nodes.
+ // Node owners may still explicitly expire a node if they wish.
+
+ // Get hash/id of the node caller is claiming
+ uint nodeId = hashOf(parentId, label);
+
+ bool isParentOwner = _isApprovedOrOwner(_msgSender(), parentId);
+ bool nodeExists = _exists(nodeId);
+
+ if (nodeExists && _isApprovedOrOwner(_msgSender(), nodeId)) {
+ require(parentId == nodes[nodeId].parentId, "AKAP: Invalid parent hash");
+
+ // Caller is current owner/approved, extend lease..
+ nodes[nodeId].expiry = uint(-1);
+ emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.RECLAIM);
+
+ return 1;
+ } else if (!nodeExists && isParentOwner) {
+ // Node does not exist, allocate to caller..
+ _mint(_msgSender(), nodeId);
+ nodes[nodeId].parentId = parentId;
+ nodes[nodeId].expiry = uint(-1);
+ emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.NEW);
+
+ return 2;
+ } else if (nodeExists && nodes[nodeId].expiry <= now && isParentOwner) {
+ require(parentId == nodes[nodeId].parentId, "AKAP: Invalid parent hash");
+
+ // Node exists and is expired, allocate to caller and extend lease..
+ _transferFrom(ownerOf(nodeId), _msgSender(), nodeId);
+ nodes[nodeId].expiry = uint(-1);
+ emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.TRANSFER);
+
+ return 3;
+ }
+
+ // No action
+ return 0;
+ }
+
+ function exists(uint nodeId) external view returns (bool) {
+ return _exists(nodeId) && nodeId > 0;
+ }
+
+ function isApprovedOrOwner(uint nodeId) external view returns (bool) {
+ return _isApprovedOrOwner(_msgSender(), nodeId);
+ }
+
+ function parentOf(uint nodeId) external view onlyExisting(nodeId) returns (uint) {
+ return nodes[nodeId].parentId;
+ }
+
+ function expiryOf(uint nodeId) external view onlyExisting(nodeId) returns (uint) {
+ return nodes[nodeId].expiry;
+ }
+
+ function seeAlso(uint nodeId) external view onlyExisting(nodeId) returns (uint) {
+ return nodes[nodeId].seeAlso;
+ }
+
+ function seeAddress(uint nodeId) external view onlyExisting(nodeId) returns (address) {
+ return nodes[nodeId].seeAddress;
+ }
+
+ function nodeBody(uint nodeId) external view onlyExisting(nodeId) returns (bytes memory) {
+ return nodes[nodeId].nodeBody;
+ }
+
+ function expireNode(uint nodeId) external onlyApproved(nodeId) {
+ nodes[nodeId].expiry = now;
+ emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.EXPIRY);
+ }
+
+ function setSeeAlso(uint nodeId, uint value) external onlyApproved(nodeId) {
+ nodes[nodeId].seeAlso = value;
+ emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.SEE_ALSO);
+ }
+
+ function setSeeAddress(uint nodeId, address value) external onlyApproved(nodeId) {
+ nodes[nodeId].seeAddress = value;
+ emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.SEE_ADDRESS);
+ }
+
+ function setNodeBody(uint nodeId, bytes calldata value) external onlyApproved(nodeId) {
+ nodes[nodeId].nodeBody = value;
+ emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.NODE_BODY);
+ }
+
+ function setTokenURI(uint nodeId, string calldata uri) external onlyApproved(nodeId) {
+ _setTokenURI(nodeId, uri);
+ emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.TOKEN_URI);
+ }
+}
\ No newline at end of file
diff --git a/contracts/IAKAP.sol b/contracts/IAKAP.sol
index 93cbc25..61e5bc9 100644
--- a/contracts/IAKAP.sol
+++ b/contracts/IAKAP.sol
@@ -57,7 +57,7 @@ contract IAKAP {
* If msg.sender is not the owner but is instead approved "spender" of node, the same logic applies. Only on
* case 2 and 3 does msg.sender become owner of the node. On case 1 only the expiry is updated.
*
- * Whenever the return value is non-zero, the expiry of the node as been set to 52 weeks into the future.
+ * Whenever the return value is non-zero, the expiry of the node has been set to 52 weeks into the future.
*
* @param parentId Hash value of parent ID
* @param label Label of node
diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js
index c05577c..f489554 100644
--- a/migrations/2_deploy_contracts.js
+++ b/migrations/2_deploy_contracts.js
@@ -1,5 +1,7 @@
var akap = artifacts.require("AKAP");
+var akaf = artifacts.require("AKAF");
module.exports = function(deployer, network, accounts) {
deployer.deploy(akap);
+ deployer.deploy(akaf);
};
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..1f80c68
--- /dev/null
+++ b/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "akap",
+ "version": "1.1.1",
+ "description": "AKA protocol, the LDAP of Ethereum",
+ "files": [
+ "/contracts/*.sol",
+ "/build/contracts/*.json"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/cfelde/AKAP.git"
+ },
+ "keywords": [
+ "solidity",
+ "solidity-contracts",
+ "solidity-dapps",
+ "ethereum",
+ "ethereum-contract",
+ "ethereum-dapp",
+ "AKAP"
+ ],
+ "author": "Christian Felde, Mohamed Elshami",
+ "license": "Apache-2.0",
+ "bugs": {
+ "url": "https://github.com/cfelde/AKAP/issues"
+ },
+ "homepage": "https://akap.me",
+ "devDependencies": {
+ "@openzeppelin/test-helpers": "^0.5.3"
+ },
+ "dependencies": {
+ "@openzeppelin/contracts": "2.3.0"
+ }
+}
diff --git a/test/akaf.js b/test/akaf.js
new file mode 100644
index 0000000..80114d8
--- /dev/null
+++ b/test/akaf.js
@@ -0,0 +1,341 @@
+// Copyright (C) 2019 Christian Felde
+// Copyright (C) 2019 Mohamed Elshami
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+
+// http://www.apache.org/licenses/LICENSE-2.0
+
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+const {expectRevert} = require('@openzeppelin/test-helpers');
+
+const akaf = artifacts.require("AKAF");
+
+function sleep(ms) {
+ return new Promise(resolve => setTimeout(resolve, ms));
+}
+
+contract("When testing AKAF, it:", async accounts => {
+
+ it("should be possible to claim a node on special case root parent id", async () => {
+ // This is a case 2 test with special case parent..
+ let instance = await akaf.deployed();
+
+ let nodeHash = await instance.hashOf(0x0, [0x1]);
+
+ await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token");
+ await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node");
+
+ assert.isFalse(await instance.exists(nodeHash));
+
+ await instance.claim(0x0, [0x1]);
+
+ assert.isTrue(await instance.exists(nodeHash));
+
+ assert.equal(accounts[0], await instance.ownerOf(nodeHash));
+ assert.isTrue(await instance.isApprovedOrOwner(nodeHash));
+ assert.isFalse(await instance.isApprovedOrOwner(nodeHash, {from: accounts[1]}));
+ assert.equal(0x0, await instance.parentOf(nodeHash));
+ assert.isTrue(await instance.expiryOf(nodeHash) > 0);
+
+ assert.equal(0x0, await instance.seeAlso(nodeHash));
+ assert.equal(0x0, await instance.seeAddress(nodeHash));
+ assert.equal(null, await instance.nodeBody(nodeHash));
+ });
+
+ it("should only be possible for the root owner to claim new root node children", async () => {
+ let instance = await akaf.deployed();
+
+ let parentHash = 0x0;
+ let nodeHash = await instance.hashOf(parentHash, [0x5]);
+
+ await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token");
+ await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node");
+
+ await instance.claim(parentHash, [0x5], {from: accounts[5]});
+
+ await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token");
+ await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node");
+
+ await instance.setApprovalForAll(accounts[5], true);
+ await instance.claim(parentHash, [0x5], {from: accounts[5]});
+
+ assert.equal(accounts[5], await instance.ownerOf(nodeHash));
+ assert.equal(0x0, await instance.parentOf(nodeHash));
+ assert.isTrue(await instance.expiryOf(nodeHash) > 0);
+
+ assert.equal(0x0, await instance.seeAlso(nodeHash));
+ assert.equal(0x0, await instance.seeAddress(nodeHash));
+ assert.equal(null, await instance.nodeBody(nodeHash));
+ });
+
+ it("should be possible to claim a node on another owned node", async () => {
+ // This is a case 2 test with non-special parent case..
+ let instance = await akaf.deployed();
+
+ let parentHash = await instance.hashOf(0x0, [0x1]);
+ let nodeHash = await instance.hashOf(parentHash, [0x2]);
+
+ await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token");
+ await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node");
+
+ await instance.claim(parentHash, [0x2]);
+
+ assert.equal(accounts[0], await instance.ownerOf(nodeHash));
+ assert.isTrue(parentHash.eq(await instance.parentOf(nodeHash)));
+ assert.isTrue(await instance.expiryOf(nodeHash) > 0);
+
+ assert.equal(0x0, await instance.seeAlso(nodeHash));
+ assert.equal(0x0, await instance.seeAddress(nodeHash));
+ assert.equal(null, await instance.nodeBody(nodeHash));
+ });
+
+ it("should be possible for owners of node to reclaim an existing node", async () => {
+ // This is a case 1 test with special case parent..
+ let instance = await akaf.deployed();
+
+ let nodeHash = await instance.hashOf(0x0, [0x1]);
+
+ let existingExpiry = await instance.expiryOf(nodeHash);
+
+ await sleep(1000);
+
+ await instance.claim(0x0, [0x1]);
+
+ assert.equal(accounts[0], await instance.ownerOf(nodeHash));
+ assert.equal(0x0, await instance.parentOf(nodeHash));
+ assert.isTrue((await instance.expiryOf(nodeHash)).toString(10) === existingExpiry.toString(10));
+
+ assert.equal(0x0, await instance.seeAlso(nodeHash));
+ assert.equal(0x0, await instance.seeAddress(nodeHash));
+ assert.equal(null, await instance.nodeBody(nodeHash));
+ });
+
+ it("should be possible for owners of node to reclaim an existing node with non-special case parent", async () => {
+ // This is a case 1 test with non-special parent case..
+ let instance = await akaf.deployed();
+
+ let parentHash = await instance.hashOf(0x0, [0x1]);
+ let nodeHash = await instance.hashOf(parentHash, [0x2]);
+
+ let existingExpiry = await instance.expiryOf(nodeHash);
+
+ await sleep(1000);
+
+ await instance.claim(parentHash, [0x2]);
+
+ assert.equal(accounts[0], await instance.ownerOf(nodeHash));
+ assert.isTrue(parentHash.eq(await instance.parentOf(nodeHash)));
+ assert.isTrue((await instance.expiryOf(nodeHash)).toString(10) === existingExpiry.toString(10));
+
+ assert.equal(0x0, await instance.seeAlso(nodeHash));
+ assert.equal(0x0, await instance.seeAddress(nodeHash));
+ assert.equal(null, await instance.nodeBody(nodeHash));
+ });
+
+ it("should be possible for owners of node to update node attributes", async () => {
+ let instance = await akaf.deployed();
+
+ let nodeHash = await instance.hashOf(0x0, [0x1]);
+
+ assert.equal(0x0, await instance.seeAlso(nodeHash));
+ assert.equal(0x0, await instance.seeAddress(nodeHash));
+ assert.equal(null, await instance.nodeBody(nodeHash));
+
+ await instance.setSeeAlso(nodeHash, 0x1);
+ await instance.setSeeAddress(nodeHash, accounts[1]);
+ await instance.setNodeBody(nodeHash, [0x1, 0x2, 0x3]);
+ await instance.setTokenURI(nodeHash, "akaf://abc");
+
+ assert.equal(0x1, await instance.seeAlso(nodeHash));
+ assert.equal(accounts[1], await instance.seeAddress(nodeHash));
+ assert.equal(0x010203, await instance.nodeBody(nodeHash));
+ assert.equal("akaf://abc", await instance.tokenURI(nodeHash));
+ });
+
+ it("should be possible for owners of node to reclaim without changing any node attributes", async () => {
+ // This is a case 1 test with special case parent..
+ let instance = await akaf.deployed();
+
+ let nodeHash = await instance.hashOf(0x0, [0x1]);
+
+ await instance.claim(0x0, [0x1]);
+
+ assert.equal(0x1, await instance.seeAlso(nodeHash));
+ assert.equal(accounts[1], await instance.seeAddress(nodeHash));
+ assert.equal(0x010203, await instance.nodeBody(nodeHash));
+ });
+
+ it("should not be possible for non-owners of a parent to reclaim an existing child node not owned by caller", async () => {
+ let instance = await akaf.deployed();
+
+ let parentHash = await instance.hashOf(0x0, [0x1]);
+ let nodeHash = await instance.hashOf(parentHash, [0x2]);
+
+ assert.equal(accounts[0], await instance.ownerOf(nodeHash));
+ await instance.claim(parentHash, [0x2], {from: accounts[1]});
+ assert.equal(accounts[0], await instance.ownerOf(nodeHash));
+ });
+
+ it("should not be possible for non-owners of a parent to claim a new child node", async () => {
+ let instance = await akaf.deployed();
+
+ let parentHash = await instance.hashOf(0x0, [0x1]);
+ let nodeHash = await instance.hashOf(parentHash, [0x3]);
+
+ await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token");
+ await instance.claim(parentHash, [0x3], {from: accounts[1]});
+ await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token");
+ });
+
+ it("should be possible for non-owners of a parent to reclaim an existing child node owned by them", async () => {
+ // This is a case 1 test..
+ let instance = await akaf.deployed();
+
+ let parentHash = await instance.hashOf(0x0, [0x1]);
+ let nodeHash = await instance.hashOf(parentHash, [0x2]);
+
+ assert.equal(accounts[0], await instance.ownerOf(nodeHash));
+ await instance.transferFrom(accounts[0], accounts[1], nodeHash);
+ assert.equal(accounts[1], await instance.ownerOf(nodeHash));
+
+ let existingExpiry = await instance.expiryOf(nodeHash);
+
+ await sleep(1000);
+
+ await instance.claim(parentHash, [0x2], {from: accounts[1]});
+
+ assert.isTrue((await instance.expiryOf(nodeHash)).toString(10) === existingExpiry.toString(10));
+
+ await instance.transferFrom(accounts[1], accounts[0], nodeHash, {from: accounts[1]});
+ });
+
+ it("should be possible for owners of node to reclaim an expired node on special case parent", async () => {
+ // This is a case 3 test with special case parent..
+ let instance = await akaf.deployed();
+
+ let nodeHash = await instance.hashOf(0x0, [0x1]);
+
+ await instance.expireNode(nodeHash);
+
+ let existingExpiry = await instance.expiryOf(nodeHash);
+
+ await sleep(1000);
+
+ await instance.claim(0x0, [0x1]);
+
+ assert.isTrue((await instance.expiryOf(nodeHash)).gt(existingExpiry));
+ });
+
+ it("should be possible for owners of node to reclaim an expired node on non-special case parent", async () => {
+ // This is a case 3 test..
+ let instance = await akaf.deployed();
+
+ let parentHash = await instance.hashOf(0x0, [0x1]);
+ let nodeHash = await instance.hashOf(parentHash, [0x2]);
+
+ await instance.expireNode(nodeHash);
+
+ let existingExpiry = await instance.expiryOf(nodeHash);
+
+ await sleep(1000);
+
+ await instance.claim(parentHash, [0x2]);
+
+ assert.isTrue((await instance.expiryOf(nodeHash)).gt(existingExpiry));
+ });
+
+ it("should be possible for non-owners of node to reclaim an expired node on special case parent", async () => {
+ // This is a case 3 test with special case parent..
+ let instance = await akaf.deployed();
+
+ let nodeHash = await instance.hashOf(0x0, [0x1]);
+
+ await instance.transferFrom(accounts[0], accounts[1], nodeHash);
+ assert.equal(accounts[1], await instance.ownerOf(nodeHash));
+
+ await instance.expireNode(nodeHash, {from: accounts[1]});
+
+ let existingExpiry = await instance.expiryOf(nodeHash);
+
+ await sleep(1000);
+
+ await instance.claim(0x0, [0x1]);
+
+ assert.isTrue((await instance.expiryOf(nodeHash)).gt(existingExpiry));
+ assert.equal(accounts[0], await instance.ownerOf(nodeHash));
+ });
+
+ it("should be possible for non-owners of node to reclaim an expired node on non-special case parent", async () => {
+ // This is a case 3 test..
+ let instance = await akaf.deployed();
+
+ let parentHash = await instance.hashOf(0x0, [0x1]);
+ let nodeHash = await instance.hashOf(parentHash, [0x2]);
+
+ await instance.transferFrom(accounts[0], accounts[1], nodeHash);
+ assert.equal(accounts[1], await instance.ownerOf(nodeHash));
+
+ await instance.expireNode(nodeHash, {from: accounts[1]});
+
+ let existingExpiry = await instance.expiryOf(nodeHash);
+
+ await sleep(1000);
+
+ await instance.claim(parentHash, [0x2]);
+
+ assert.isTrue((await instance.expiryOf(nodeHash)).gt(existingExpiry));
+ assert.equal(accounts[0], await instance.ownerOf(nodeHash));
+ });
+
+ it("should only be possible to use labels within limits", async () => {
+ let instance = await akaf.deployed();
+
+ let minLength = 1;
+ let maxLength = 32;
+
+ await expectRevert(instance.claim(0x0, Array.apply(null, Array(minLength - 1)).map(function (x, i) {
+ return i + 10;
+ }), {from: accounts[5]}), "AKAP: Invalid label length");
+ await expectRevert(instance.claim(0x0, Array.apply(null, Array(maxLength + 1)).map(function (x, i) {
+ return i + 10;
+ }), {from: accounts[5]}), "AKAP: Invalid label length");
+
+ instance.claim(0x0, Array.apply(null, Array(minLength)).map(function (x, i) {
+ return i + 10;
+ }), {from: accounts[5]});
+ instance.claim(0x0, Array.apply(null, Array(maxLength)).map(function (x, i) {
+ return i + 10;
+ }), {from: accounts[5]});
+
+ assert.equal(accounts[5], await instance.ownerOf(await instance.hashOf(0x0, Array.apply(null, Array(minLength)).map(function (x, i) {
+ return i + 10;
+ }), {from: accounts[1]})));
+ assert.equal(accounts[5], await instance.ownerOf(await instance.hashOf(0x0, Array.apply(null, Array(maxLength)).map(function (x, i) {
+ return i + 10;
+ }), {from: accounts[1]})));
+ });
+
+});
diff --git a/test/akaf_events.js b/test/akaf_events.js
new file mode 100644
index 0000000..cac9c9b
--- /dev/null
+++ b/test/akaf_events.js
@@ -0,0 +1,192 @@
+// Copyright (C) 2019 Christian Felde
+// Copyright (C) 2019 Mohamed Elshami
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+
+// http://www.apache.org/licenses/LICENSE-2.0
+
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+const {expectEvent} = require('@openzeppelin/test-helpers');
+
+const akaf = artifacts.require("AKAF");
+
+contract("When testing AKAF events, it:", async accounts => {
+
+ it("should emit a Claim event of type ClaimCase.NEW when an owner claims a node with special case parent", async () => {
+ // This is a case 2 test with special case parent..
+ let instance = await akaf.deployed();
+ let nodeHash = await instance.hashOf(0x0, [0x1]);
+
+ let receipt = await instance.claim(0x0, [0x1]);
+
+ let args = {
+ sender: accounts[0].toString(),
+ nodeId: nodeHash.toString(),
+ parentId: "0",
+ label: "0x01",
+ claimCase: "1"
+ };
+ await expectEvent.inLogs(receipt.logs, "Claim", args);
+ });
+
+ it("should emit a Claim of type ClaimCase.RECLAIM event when owner claim existing node with special case parent", async () => {
+ // This is a case 1 test with special case parent..
+ let instance = await akaf.deployed();
+ let nodeHash = await instance.hashOf(0x0, [0x1]);
+
+ let receipt = await instance.claim(0x0, [0x1]);
+ let args = {
+ sender: accounts[0].toString(),
+ nodeId: nodeHash.toString(),
+ parentId: "0",
+ label: "0x01",
+ claimCase: "0"
+ };
+ await expectEvent.inLogs(receipt.logs, "Claim", args);
+ });
+
+ it("should emit a Claim event of type ClaimCase.NEW when an owner claims a node with non-special case parent", async () => {
+ // This is a case 2 test with non-special case parent..
+ let instance = await akaf.deployed();
+ let parentHash = await instance.hashOf(0x0, [0x1]);
+ let nodeHash = await instance.hashOf(parentHash, [0x1]);
+
+ let receipt = await instance.claim(parentHash, [0x1]);
+
+ let args = {
+ sender: accounts[0].toString(),
+ nodeId: nodeHash.toString(),
+ parentId: parentHash.toString(),
+ label: "0x01",
+ claimCase: "1"
+ };
+ await expectEvent.inLogs(receipt.logs, "Claim", args);
+ });
+
+ it("should emit a Claim of type ClaimCase.RECLAIM event when owner claim existing node with non-special case parent", async () => {
+ // This is a case 1 test with non-special case parent..
+ let instance = await akaf.deployed();
+ let parentHash = await instance.hashOf(0x0, [0x1]);
+ let nodeHash = await instance.hashOf(parentHash, [0x1]);
+
+ let receipt = await instance.claim(parentHash, [0x1]);
+ let args = {
+ sender: accounts[0].toString(),
+ nodeId: nodeHash.toString(),
+ parentId: parentHash.toString(),
+ label: "0x01",
+ claimCase: "0"
+ };
+ await expectEvent.inLogs(receipt.logs, "Claim", args);
+ });
+
+ it("should emit a Claim of type ClaimCase.TRANSFER event when new owner claim existing node on special case owner", async () => {
+ // Test case 3 emits ClaimCase.TRANSFER event with special case parent..
+ let instance = await akaf.deployed();
+ let nodeHash = await instance.hashOf(0x0, [0x2]);
+
+ await instance.claim(0x0, [0x2]);
+ await instance.transferFrom(accounts[0], accounts[1], nodeHash);
+
+ let receipt = await instance.claim(0x0, [0x2]);
+ assert.equal(0, receipt.logs.length, "No events should be emitted, expect empty logs.");
+
+ await instance.expireNode(nodeHash, {from: accounts[1]});
+
+ receipt = await instance.claim(0x0, [0x2]);
+
+ let args = {
+ sender: accounts[0].toString(),
+ nodeId: nodeHash.toString(),
+ parentId: "0",
+ label: "0x02",
+ claimCase: "2"
+ };
+ await expectEvent.inLogs(receipt.logs, "Claim", args);
+ });
+
+ it("should emit a Claim of type ClaimCase.TRANSFER event when new owner claim existing node on non-special case owner", async () => {
+ // Test case 3 emits ClaimCase.TRANSFER event with non-special case parent..
+ let instance = await akaf.deployed();
+ let parentHash = await instance.hashOf(0x0, [0x2])
+ let nodeHash = await instance.hashOf(parentHash, [0x2]);
+
+ await instance.claim(parentHash, [0x2]);
+ await instance.transferFrom(accounts[0], accounts[1], nodeHash);
+
+ let receipt = await instance.claim(parentHash, [0x2]);
+ assert.equal(0, receipt.logs.length, "No events should be emitted, expect empty logs.");
+
+ await instance.expireNode(nodeHash, {from: accounts[1]});
+
+ receipt = await instance.claim(parentHash, [0x2]);
+
+ let args = {
+ sender: accounts[0].toString(),
+ nodeId: nodeHash.toString(),
+ parentId: parentHash.toString(),
+ label: "0x02",
+ claimCase: "2"
+ };
+ await expectEvent.inLogs(receipt.logs, "Claim", args);
+ });
+
+ it("should emit AttributeChanged event when a node attribute is updated with special case parent", async () => {
+ let instance = await akaf.deployed();
+ let nodeHash = await instance.hashOf(0x0, [0x1]);
+
+ let receipt = await instance.expireNode(nodeHash);
+ let args = {sender: accounts[0].toString(), nodeId: nodeHash.toString(), attribute: "0"}; // NodeAttribute.EXPIRY
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+
+ receipt = await instance.setSeeAlso(nodeHash, 0x1);
+ args["attribute"] = "1"; // NodeAttribute.SEE_ALSO
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+
+ receipt = await instance.setSeeAddress(nodeHash, accounts[1]);
+ args["attribute"] = "2"; // NodeAttribute.SEE_ADDRESS
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+
+ receipt = await instance.setNodeBody(nodeHash, [0x1, 0x2, 0x3]);
+ args["attribute"] = "3"; // NodeAttribute.NODE_BODY
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+
+ receipt = await instance.setTokenURI(nodeHash, "akaf://abc");
+ args["attribute"] = "4"; // NodeAttribute.TOKEN_URI
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+ });
+
+ it("should emit AttributeChanged event when a node attribute is updated with non-special case parent", async () => {
+ let instance = await akaf.deployed();
+ let parentHash = await instance.hashOf(0x0, [0x2]);
+ let nodeHash = await instance.hashOf(parentHash, [0x2]);
+
+ let receipt = await instance.expireNode(nodeHash);
+ let args = {sender: accounts[0].toString(), nodeId: nodeHash.toString(), attribute: "0"}; // NodeAttribute.EXPIRY
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+
+ receipt = await instance.setSeeAlso(nodeHash, 0x1);
+ args["attribute"] = "1"; // NodeAttribute.SEE_ALSO
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+
+ receipt = await instance.setSeeAddress(nodeHash, accounts[1]);
+ args["attribute"] = "2"; // NodeAttribute.SEE_ADDRESS
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+
+ receipt = await instance.setNodeBody(nodeHash, [0x1, 0x2, 0x3]);
+ args["attribute"] = "3"; // NodeAttribute.NODE_BODY
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+
+ receipt = await instance.setTokenURI(nodeHash, "akaf://abc");
+ args["attribute"] = "4"; // NodeAttribute.TOKEN_URI
+ await expectEvent.inLogs(receipt.logs, "AttributeChanged", args);
+ });
+
+});
diff --git a/test/akap.js b/test/akap.js
index 9ff7ba9..1e18cd2 100644
--- a/test/akap.js
+++ b/test/akap.js
@@ -53,6 +53,30 @@ contract("When testing AKAP, it:", async accounts => {
assert.equal(null, await instance.nodeBody(nodeHash));
});
+ it("should be possible for any account to claim new root node children", async () => {
+ let instance = await akap.deployed();
+
+ let parentHash = 0x0;
+ let nodeHash = await instance.hashOf(parentHash, [0x5]);
+
+ await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token");
+ await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node");
+ await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node");
+
+ await instance.claim(parentHash, [0x5], {from: accounts[5]});
+
+ assert.equal(accounts[5], await instance.ownerOf(nodeHash));
+ assert.equal(0x0, await instance.parentOf(nodeHash));
+ assert.isTrue(await instance.expiryOf(nodeHash) > 0);
+
+ assert.equal(0x0, await instance.seeAlso(nodeHash));
+ assert.equal(0x0, await instance.seeAddress(nodeHash));
+ assert.equal(null, await instance.nodeBody(nodeHash));
+ });
+
it("should be possible to claim a node on another owned node", async () => {
// This is a case 2 test with non-special parent case..
let instance = await akap.deployed();
diff --git a/truffle-config.js b/truffle-config.js
index 938e034..17cc3b1 100644
--- a/truffle-config.js
+++ b/truffle-config.js
@@ -42,11 +42,11 @@ module.exports = {
// tab if you use this network and you must also set the `host`, `port` and `network_id`
// options below to some value.
//
- // development: {
- // host: "127.0.0.1", // Localhost (default: none)
- // port: 8545, // Standard Ethereum port (default: none)
- // network_id: "*", // Any network (default: none)
- // },
+ development: {
+ host: "127.0.0.1", // Localhost (default: none)
+ port: 8545, // Standard Ethereum port (default: none)
+ network_id: "*", // Any network (default: none)
+ },
// Another network with more advanced options...
// advanced: {