{
  "contractName": "StateRegistry",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "GrantedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "RevokedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedFinalizedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedState",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRootAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getFinalizedState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForStateAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUintValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setFinalizedState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"GrantedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"RevokedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedFinalizedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedState\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getFinalizedState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForStateAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUintValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRootAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setFinalizedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getFinalizedState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"grantAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to grant access to\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"hasAccess(bytes32,bytes4,address)\":{\"params\":{\"account\":\"address of the account for which to check access\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"},\"returns\":{\"_0\":\"true if allowed access\"}},\"hasRootAccess(bytes32,address)\":{\"params\":{\"account\":\"address of the account for which to check root acccess\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if has root access\"}},\"revokeAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to revoke access for\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}}},\"title\":\"StateRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getFinalizedState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"grantAccess(bytes32,bytes4,address)\":{\"notice\":\"Grant access to an account to call a specific method on a specific asset.\"},\"hasAccess(bytes32,bytes4,address)\":{\"notice\":\"Check whether an account is allowed to call a specific method on a specific asset.\"},\"hasRootAccess(bytes32,address)\":{\"notice\":\"Check whether an account has root access for a specific asset.\"},\"revokeAccess(bytes32,bytes4,address)\":{\"notice\":\"Revoke access for an account to call a specific method on a specific asset.\"},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next finalized state of an asset.\"},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next state of an asset.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol\":\"StateRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol\":{\"keccak256\":\"0x7cb99654f112c88d67ac567b688f2d38e54bf2d4eeb5c3df12bac7d68c85c6e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836ccdb22ebced3535672e70a0c41803b3064872ab18bfeeafff6c4437f128c2\",\"dweb:/ipfs/QmV3RuN1vmHoiZUFymS6FHeEHkcZy1yZyR13sfMwEDyjbr\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/IAccessControl.sol\":{\"keccak256\":\"0xbbe1aada0583637e5ae8b0a09ae59d629c1da70bde5a3f291f5f0ed42440d091\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36ab01d00a9ebd59822247cdc7bee3c70af062e2c9408e8f80e1656fc9d2761c\",\"dweb:/ipfs/QmSQzma4M2TDZup2dERJi368F8z9UQQ1zyUsq8e41hgg2F\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol\":{\"keccak256\":\"0x872f4fd27fe80b6b3826bdaeaacdb77fb529d34235735f82e1413a5fe655f68b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c24b8fa53dfb2a11c67053c4b00de83307e45c83229e4b44f71d21eb9b0e5abd\",\"dweb:/ipfs/QmetZ6ptmsueoaCxjBMqpaZYdHgpjqPhjZurKbG2ZudbqY\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleEncoder.sol\":{\"keccak256\":\"0x887c1085da0a8f7b055ae73bc3337228d70cef2296521103abb5fcb53315313e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cb408a6f3e5f9394eacaeeaeb2d38db05f994b952cfaa6ca896c0af978cf27d7\",\"dweb:/ipfs/QmeDp1TWA1rGijSgQUPwCJoc933gPD8FVTkDTupppxuZhS\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol\":{\"keccak256\":\"0x1008f735ba366f9a638199d8ec4fa31b192c8745491527278d97717426d6d609\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://decc19c372fbefee7c369678114861def1c748748154966e2ee5e11e690b9039\",\"dweb:/ipfs/QmXjZhoNak7uUmYZMj7sAdijzsqLpDoh6T2bYcRDVgX6z6\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateEncoder.sol\":{\"keccak256\":\"0x2668d331c79ff3eb189a5fd813fdc77ff9adb82c8c6323f3b09fd72e47674492\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://01ecc394db0ce16d5e415b55dd0bf78d7de70197ed3a60602b11a814451fd5ff\",\"dweb:/ipfs/QmfVdpeeuFXSjnUSMiwp9pS3gAhKE72zwBFdBy29DDLBH4\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol\":{\"keccak256\":\"0xb370cd39c2cb2dafb80cd7c75f9239126715a7b5b537dff4ead9fa0cab8afe06\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6b848682df2d28ad4f3988193249488f0fe9d7e656678054efe258b7d0eb9ee1\",\"dweb:/ipfs/QmTFT5Gg55ZLsdrTQ73ZvDCjaCfNKeBK2MS9hwaxQXhoQK\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol\":{\"keccak256\":\"0x4482adab804008a2774b11036cc9ff6f42aa7f248d6b8ca922082bf090a736e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e774c979286649c16d92eb4672c30c06fcbe7ddc053eee70088c4b28fc27e48c\",\"dweb:/ipfs/QmXqfezUnKVaKzA7Qs9BFC9yRKFTMwwxa778ofikE2hC1H\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol\":{\"keccak256\":\"0x5a918fdefe9bd357255bffcf75d325f0d23ccf7074533f8d6a80a62bfd60893e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c5fc68f47deab5b0cc572a8a1f7dba997e5a8bb13292ce3e4ee29540a3b1fd7\",\"dweb:/ipfs/QmeqcqcDYsgvbBH8XrHzURMuz9jQLEf4F2i5M59wYMCxgt\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSConstants.sol\":{\"keccak256\":\"0xd7588866afdab6298dd5b64c5fe0ca63230236538d711932e7a5a17928d1226b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2a0678d5f895239119f463a3ae8a58c5c27b872c91db1cd4253ce5866481c6cd\",\"dweb:/ipfs/QmPXsMXFf1Qar8JCnKTL6Nizf63sZEQQt7XosrdeEnG2CE\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506117bf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063606aa07e11610071578063606aa07e1461013257806367fe5d70146101525780636a899b9b146101325780637d870dd414610165578063cf5aed1214610178578063e8f7ca3e14610198576100a9565b806309648a9d146100ae5780631717e867146100d75780631b126815146100ec57806337462dba1461010c57806339262e871461011f575b600080fd5b6100c16100bc366004611398565b6101ab565b6040516100ce9190611657565b60405180910390f35b6100ea6100e5366004611400565b6101d0565b005b6100ff6100fa366004611400565b61028c565b6040516100ce9190611590565b6100c161011a366004611398565b610303565b6100ea61012d366004611400565b610322565b6101456101403660046113df565b6103c5565b6040516100ce91906115b0565b6100ea61016036600461144d565b6103ea565b6100ea61017336600461144d565b6104af565b61018b6101863660046113df565b610567565b6040516100ce919061173c565b6100ff6101a63660046113b0565b610585565b6101b36112ef565b60008281526020819052604090206101ca906105b9565b92915050565b6101e7836000356001600160e01b0319163361028c565b61020c5760405162461bcd60e51b815260040161020390611608565b60405180910390fd5b6000838152602081815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19166001179055905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659061027f90869061159b565b60405180910390a3505050565b6000838152602081815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff16806102fb5750600084815260208181526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b949350505050565b61030b6112ef565b60008281526020819052604090206101ca906108b1565b610339836000356001600160e01b0319163361028c565b6103555760405162461bcd60e51b815260040161020390611608565b6000838152602081815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa9061027f90869061159b565b60008281526020819052604081206103e3908363ffffffff610bd316565b9392505050565b60008281526020819052604090206001015482906001600160a01b03163314806104265750610426816000356001600160e01b0319163361028c565b6104425760405162461bcd60e51b8152600401610203906115b9565b61046e61045436849003840184611485565b60008581526020819052604090209063ffffffff610be916565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f83602001356040516104a291906115b0565b60405180910390a2505050565b60008281526020819052604090206001015482906001600160a01b03163314806104eb57506104eb816000356001600160e01b0319163361028c565b6105075760405162461bcd60e51b8152600401610203906115b9565b61053361051936849003840184611485565b60008581526020819052604090209063ffffffff610f1716565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec683602001356040516104a291906115b0565b60008281526020819052604081206103e3908363ffffffff61120d16565b600091825260208281526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6105c16112ef565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c600581111561060457fe5b600581111561060f57fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b6108b96112ef565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156108fe57fe5b600581111561090957fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b6000908152600e91909101602052604090205490565b610c228274465f636f6e7472616374506572666f726d616e636560581b60f884600001516005811115610c1857fe5b60ff16901b6112b9565b610c43826b465f7374617475734461746560a01b836020015160001b6112b9565b610c6b8272465f6e6f6e506572666f726d696e674461746560681b836040015160001b6112b9565b610c8e826d465f6d617475726974794461746560901b836060015160001b6112b9565b610cb1826d465f65786572636973654461746560901b836080015160001b6112b9565b610cd78270465f7465726d696e6174696f6e4461746560781b8360a0015160001b6112b9565b610cff82721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b6112b9565b610d2682701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b6112b9565b610d48826b1197d999595058d8dc9d595960a21b83610120015160001b6112b9565b610d738274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b6112b9565b610da6827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b6112b9565b610dd9827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b6112b9565b610e0c827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b6112b9565b610e32826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b6112b9565b610e5a8271465f65786572636973655175616e7469747960701b836101e0015160001b6112b9565b610e7a8269465f7175616e7469747960b01b83610200015160001b6112b9565b610ea382721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b6112b9565b610ec7826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b6112b9565b610eef8271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b6112b9565b610f13826e465f6c617374436f75706f6e44617960881b8360c0015160001b6112b9565b5050565b610f448272636f6e7472616374506572666f726d616e636560681b60f884600001516005811115610c1857fe5b610f6382697374617475734461746560b01b836020015160001b6112b9565b610f8982706e6f6e506572666f726d696e674461746560781b836040015160001b6112b9565b610faa826b6d617475726974794461746560a01b836060015160001b6112b9565b610fcb826b65786572636973654461746560a01b836080015160001b6112b9565b610fef826e7465726d696e6174696f6e4461746560881b8360a0015160001b6112b9565b61101582701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b6112b9565b61103a826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b6112b9565b61105a82691999595058d8dc9d595960b21b83610120015160001b6112b9565b61108382726e6f6d696e616c496e7465726573745261746560681b83610140015160001b6112b9565b6110b2827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b6112b9565b6110e182783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b6112b9565b611114827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b6112b9565b611138826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b6112b9565b61115e826f65786572636973655175616e7469747960801b836101e0015160001b6112b9565b61117c82677175616e7469747960c01b83610200015160001b6112b9565b6111a3827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b6112b9565b6111c5826b36b0b933b4b72330b1ba37b960a11b83610240015160001b6112b9565b6111eb826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b6112b9565b610f13826c6c617374436f75706f6e44617960981b8360c0015160001b6112b9565b600072636f6e7472616374506572666f726d616e636560681b82141561125e575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c6101ca565b74465f636f6e7472616374506572666f726d616e636560581b8214156112b1575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c6101ca565b5060006101ca565b6000828152600e840160205260409020548114156112d6576112ea565b6000828152600e8401602052604090208190555b505050565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8035600681106101ca57600080fd5b6000602082840312156113a9578081fd5b5035919050565b600080604083850312156113c2578081fd5b8235915060208301356113d481611771565b809150509250929050565b600080604083850312156113f1578182fd5b50508035926020909101359150565b600080600060608486031215611414578081fd5b8335925060208401356001600160e01b031981168114611432578182fd5b9150604084013561144281611771565b809150509250925092565b6000808284036102a0811215611461578283fd5b83359250610280601f1982011215611477578182fd5b506020830190509250929050565b6000610280808385031215611498578182fd5b6114a18161174a565b6114ab8585611389565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b6006811061158c57fe5b9052565b901515815260200190565b6001600160e01b031991909116815260200190565b90815260200190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60006102808201905061166b828451611582565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561176957600080fd5b604052919050565b6001600160a01b038116811461178657600080fd5b5056fea2646970667358221220c66562447a429eb13a8ce51bfcbde643386e742face0ed5cb3e06f9af3365fdf64736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063606aa07e11610071578063606aa07e1461013257806367fe5d70146101525780636a899b9b146101325780637d870dd414610165578063cf5aed1214610178578063e8f7ca3e14610198576100a9565b806309648a9d146100ae5780631717e867146100d75780631b126815146100ec57806337462dba1461010c57806339262e871461011f575b600080fd5b6100c16100bc366004611398565b6101ab565b6040516100ce9190611657565b60405180910390f35b6100ea6100e5366004611400565b6101d0565b005b6100ff6100fa366004611400565b61028c565b6040516100ce9190611590565b6100c161011a366004611398565b610303565b6100ea61012d366004611400565b610322565b6101456101403660046113df565b6103c5565b6040516100ce91906115b0565b6100ea61016036600461144d565b6103ea565b6100ea61017336600461144d565b6104af565b61018b6101863660046113df565b610567565b6040516100ce919061173c565b6100ff6101a63660046113b0565b610585565b6101b36112ef565b60008281526020819052604090206101ca906105b9565b92915050565b6101e7836000356001600160e01b0319163361028c565b61020c5760405162461bcd60e51b815260040161020390611608565b60405180910390fd5b6000838152602081815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19166001179055905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659061027f90869061159b565b60405180910390a3505050565b6000838152602081815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff16806102fb5750600084815260208181526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b949350505050565b61030b6112ef565b60008281526020819052604090206101ca906108b1565b610339836000356001600160e01b0319163361028c565b6103555760405162461bcd60e51b815260040161020390611608565b6000838152602081815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa9061027f90869061159b565b60008281526020819052604081206103e3908363ffffffff610bd316565b9392505050565b60008281526020819052604090206001015482906001600160a01b03163314806104265750610426816000356001600160e01b0319163361028c565b6104425760405162461bcd60e51b8152600401610203906115b9565b61046e61045436849003840184611485565b60008581526020819052604090209063ffffffff610be916565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f83602001356040516104a291906115b0565b60405180910390a2505050565b60008281526020819052604090206001015482906001600160a01b03163314806104eb57506104eb816000356001600160e01b0319163361028c565b6105075760405162461bcd60e51b8152600401610203906115b9565b61053361051936849003840184611485565b60008581526020819052604090209063ffffffff610f1716565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec683602001356040516104a291906115b0565b60008281526020819052604081206103e3908363ffffffff61120d16565b600091825260208281526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6105c16112ef565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c600581111561060457fe5b600581111561060f57fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b6108b96112ef565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156108fe57fe5b600581111561090957fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b6000908152600e91909101602052604090205490565b610c228274465f636f6e7472616374506572666f726d616e636560581b60f884600001516005811115610c1857fe5b60ff16901b6112b9565b610c43826b465f7374617475734461746560a01b836020015160001b6112b9565b610c6b8272465f6e6f6e506572666f726d696e674461746560681b836040015160001b6112b9565b610c8e826d465f6d617475726974794461746560901b836060015160001b6112b9565b610cb1826d465f65786572636973654461746560901b836080015160001b6112b9565b610cd78270465f7465726d696e6174696f6e4461746560781b8360a0015160001b6112b9565b610cff82721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b6112b9565b610d2682701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b6112b9565b610d48826b1197d999595058d8dc9d595960a21b83610120015160001b6112b9565b610d738274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b6112b9565b610da6827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b6112b9565b610dd9827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b6112b9565b610e0c827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b6112b9565b610e32826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b6112b9565b610e5a8271465f65786572636973655175616e7469747960701b836101e0015160001b6112b9565b610e7a8269465f7175616e7469747960b01b83610200015160001b6112b9565b610ea382721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b6112b9565b610ec7826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b6112b9565b610eef8271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b6112b9565b610f13826e465f6c617374436f75706f6e44617960881b8360c0015160001b6112b9565b5050565b610f448272636f6e7472616374506572666f726d616e636560681b60f884600001516005811115610c1857fe5b610f6382697374617475734461746560b01b836020015160001b6112b9565b610f8982706e6f6e506572666f726d696e674461746560781b836040015160001b6112b9565b610faa826b6d617475726974794461746560a01b836060015160001b6112b9565b610fcb826b65786572636973654461746560a01b836080015160001b6112b9565b610fef826e7465726d696e6174696f6e4461746560881b8360a0015160001b6112b9565b61101582701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b6112b9565b61103a826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b6112b9565b61105a82691999595058d8dc9d595960b21b83610120015160001b6112b9565b61108382726e6f6d696e616c496e7465726573745261746560681b83610140015160001b6112b9565b6110b2827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b6112b9565b6110e182783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b6112b9565b611114827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b6112b9565b611138826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b6112b9565b61115e826f65786572636973655175616e7469747960801b836101e0015160001b6112b9565b61117c82677175616e7469747960c01b83610200015160001b6112b9565b6111a3827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b6112b9565b6111c5826b36b0b933b4b72330b1ba37b960a11b83610240015160001b6112b9565b6111eb826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b6112b9565b610f13826c6c617374436f75706f6e44617960981b8360c0015160001b6112b9565b600072636f6e7472616374506572666f726d616e636560681b82141561125e575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c6101ca565b74465f636f6e7472616374506572666f726d616e636560581b8214156112b1575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c6101ca565b5060006101ca565b6000828152600e840160205260409020548114156112d6576112ea565b6000828152600e8401602052604090208190555b505050565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8035600681106101ca57600080fd5b6000602082840312156113a9578081fd5b5035919050565b600080604083850312156113c2578081fd5b8235915060208301356113d481611771565b809150509250929050565b600080604083850312156113f1578182fd5b50508035926020909101359150565b600080600060608486031215611414578081fd5b8335925060208401356001600160e01b031981168114611432578182fd5b9150604084013561144281611771565b809150509250925092565b6000808284036102a0811215611461578283fd5b83359250610280601f1982011215611477578182fd5b506020830190509250929050565b6000610280808385031215611498578182fd5b6114a18161174a565b6114ab8585611389565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b6006811061158c57fe5b9052565b901515815260200190565b6001600160e01b031991909116815260200190565b90815260200190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60006102808201905061166b828451611582565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561176957600080fd5b604052919050565b6001600160a01b038116811461178657600080fd5b5056fea2646970667358221220c66562447a429eb13a8ce51bfcbde643386e742face0ed5cb3e06f9af3365fdf64736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "248:2584:19:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "248:2584:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;615:176;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1194:397:6;;;;;;:::i;:::-;;:::i;:::-;;2741:280;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;931:194:19:-;;;;;;:::i;:::-;;:::i;1970:399:6:-;;;;;;:::i;:::-;;:::i;1619:242:19:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2566:264::-;;;;;;:::i;:::-;;:::i;2090:237::-;;;;;;:::i;:::-;;:::i;1131:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3276:186:6:-;;;;;;:::i;:::-;;:::i;615:176:19:-;714:12;;:::i;:::-;749:6;:15;;;;;;;;;;:35;;:33;:35::i;:::-;742:42;615:176;-1:-1:-1;;615:176:19:o;1194:397:6:-;1342:39;1352:7;1361;;-1:-1:-1;;;;;;1361:7:6;1370:10;1342:9;:39::i;:::-;1321:133;;;;-1:-1:-1;;;1321:133:6;;;;;;;:::i;:::-;;;;;;;;;1465:6;:15;;;;;;;;;;;-1:-1:-1;;;;;;1465:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;1465:48:6;;;;;;;;;;;:55;;-1:-1:-1;;1465:55:6;1516:4;1465:55;;;1536:48;;1472:7;;1536:48;;;;1488:15;;1536:48;:::i;:::-;;;;;;;;1194:397;;;:::o;2741:280::-;2867:4;2908:15;;;;;;;;;;;-1:-1:-1;;;;;;2908:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2908:48:6;;;;;;;;;;;;;:96;;-1:-1:-1;2960:6:6;:15;;;;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;2960:44:6;;;;;;;;;;;;2908:96;2887:127;2741:280;-1:-1:-1;;;;2741:280:6:o;931:194:19:-;1039:12;;:::i;:::-;1074:6;:15;;;;;;;;;;:44;;:42;:44::i;1970:399:6:-;2119:39;2129:7;2138;;-1:-1:-1;;;;;;2138:7:6;2147:10;2119:9;:39::i;:::-;2098:133;;;;-1:-1:-1;;;2098:133:6;;;;;;;:::i;:::-;2293:5;2242:15;;;;;;;;;;;-1:-1:-1;;;;;;2242:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2242:48:6;;;;;;;;;;;:56;;-1:-1:-1;;2242:56:6;;;2314:48;;2249:7;;2314:48;;;;2265:15;;2314:48;:::i;1619:242:19:-;1756:7;1786:15;;;;;;;;;;:68;;1844:9;1786:68;:57;:68;:::i;:::-;1779:75;1619:242;-1:-1:-1;;;1619:242:19:o;2566:264::-;664:6:6;:15;;;;;;;;;;:21;;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2711:49:19::1;;;::::0;;::::1;::::0;::::1;2754:5:::0;2711:49:::1;:::i;:::-;:6;:15:::0;;;::::1;::::0;;;;;;;:49:::1;:42;:49;:::i;:::-;2797:7;2775:48;2806:5;:16;;;2775:48;;;;;;:::i;:::-;;;;;;;;2566:264:::0;;;:::o;2090:237::-;664:6:6;:15;;;;;;;;;;:21;;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2226:40:19::1;;;::::0;;::::1;::::0;::::1;2260:5:::0;2226:40:::1;:::i;:::-;:6;:15:::0;;;::::1;::::0;;;;;;;:40:::1;:33;:40;:::i;:::-;2294:7;2281:39;2303:5;:16;;;2281:39;;;;;;:::i;1131:237::-:0;1268:5;1296:15;;;;;;;;;;:65;;1351:9;1296:65;:54;:65;:::i;3276:186:6:-;3382:4;3410:15;;;;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;3410:44:6;;;;;;;;;;;;;;;3276:186::o;4420:1363:18:-;4491:12;;:::i;:::-;4522:1254;;;;;;;;-1:-1:-1;;;;4575:40:18;;;:17;;;:40;;;;;;;4522:1254;;4619:3;4575:47;4541:84;;;;;;;;4522:1254;;;;;;;;;;-1:-1:-1;;;4647:31:18;;;;:17;;;4522:1254;4647:31;;;;;;;;4522:1254;;;;-1:-1:-1;;;4701:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4762:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4818:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4874:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4934:34:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5003:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5063:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5121:31:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5174:40:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5236:46:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5304:46:18;;;;;;;;;4522:1254;;;;5372:51;;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5445:35:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5503:37:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5562:29:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5613:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5673:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5728:37:18;;;;;;;;4522:1254;;;;;4515:1261;-1:-1:-1;4420:1363:18;;;:::o;5866:1400::-;5946:12;;:::i;:::-;5977:1282;;;;;;;;-1:-1:-1;;;;6030:42:18;;;:17;;;:42;;;;;;;5977:1282;;6076:3;6030:49;5996:86;;;;;;;;5977:1282;;;;;;;;;;-1:-1:-1;;;6104:33:18;;;;:17;;;5977:1282;6104:33;;;;;;;;5977:1282;;;;-1:-1:-1;;;6160:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6223:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6281:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6339:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6401:36:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6460:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6522:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6582:33:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6637:42:18;;;;;;;;;5977:1282;;;;6701:48;;;;;;;;;;5977:1282;;;;6771:48;;;;;;;;;;5977:1282;;;;6841:53;;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6916:37:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6976:39:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7037:31:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7090:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7152:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7209:39:18;;;;;;;;5977:1282;;;;;5970:1289;-1:-1:-1;5866:1400:18;;;:::o;7794:218::-;7935:7;7973:31;;;:17;;;;;:31;;;;;;;7794:218::o;2426:1921::-;2522:109;2541:5;-1:-1:-1;;;2627:3:18;2595:5;:25;;;2589:32;;;;;;;;2581:41;;2573:57;;2522:18;:109::i;:::-;2641:68;2660:5;-1:-1:-1;;;2691:5:18;:16;;;2683:25;;2641:18;:68::i;:::-;2719:82;2738:5;-1:-1:-1;;;2776:5:18;:23;;;2768:32;;2719:18;:82::i;:::-;2811:72;2830:5;-1:-1:-1;;;2863:5:18;:18;;;2855:27;;2811:18;:72::i;:::-;2893;2912:5;-1:-1:-1;;;2945:5:18;:18;;;2937:27;;2893:18;:72::i;:::-;2975:78;2994:5;-1:-1:-1;;;3030:5:18;:21;;;3022:30;;2975:18;:78::i;:::-;3063:82;3082:5;-1:-1:-1;;;3120:5:18;:23;;;3112:32;;3063:18;:82::i;:::-;3155:78;3174:5;-1:-1:-1;;;3210:5:18;:21;;;3202:30;;3155:18;:78::i;:::-;3243:68;3262:5;-1:-1:-1;;;3293:5:18;:16;;;3285:25;;3243:18;:68::i;:::-;3321:86;3340:5;-1:-1:-1;;;3380:5:18;:25;;;3372:34;;3321:18;:86::i;:::-;3417:98;3436:5;3417:98;3482:5;:31;;;3474:40;;3417:18;:98::i;:::-;3525;3544:5;3525:98;3590:5;:31;;;3582:40;;3525:18;:98::i;:::-;3633:108;3652:5;3633:108;3703:5;:36;;;3695:45;;3633:18;:108::i;:::-;3751:76;3770:5;-1:-1:-1;;;3805:5:18;:20;;;3797:29;;3751:18;:76::i;:::-;3838:80;3857:5;-1:-1:-1;;;3894:5:18;:22;;;3886:31;;3838:18;:80::i;:::-;3928:64;3947:5;-1:-1:-1;;;3976:5:18;:14;;;3968:23;;3928:18;:64::i;:::-;4002:82;4021:5;-1:-1:-1;;;4059:5:18;:23;;;4051:32;;4002:18;:82::i;:::-;4094:72;4113:5;-1:-1:-1;;;4146:5:18;:18;;;4138:27;;4094:18;:72::i;:::-;4176:80;4195:5;-1:-1:-1;;;4232:5:18;:22;;;4224:31;;4176:18;:80::i;:::-;4266:74;4285:5;-1:-1:-1;;;4319:5:18;:19;;;4311:28;;4266:18;:74::i;:::-;2426:1921;;:::o;481:1872::-;568:107;587:5;-1:-1:-1;;;671:3:18;639:5;:25;;;633:32;;;;;;;568:107;685:66;704:5;-1:-1:-1;;;733:5:18;:16;;;725:25;;685:18;:66::i;:::-;761:80;780:5;-1:-1:-1;;;816:5:18;:23;;;808:32;;761:18;:80::i;:::-;851:70;870:5;-1:-1:-1;;;901:5:18;:18;;;893:27;;851:18;:70::i;:::-;931;950:5;-1:-1:-1;;;981:5:18;:18;;;973:27;;931:18;:70::i;:::-;1011:76;1030:5;-1:-1:-1;;;1064:5:18;:21;;;1056:30;;1011:18;:76::i;:::-;1097:80;1116:5;-1:-1:-1;;;1152:5:18;:23;;;1144:32;;1097:18;:80::i;:::-;1187:76;1206:5;-1:-1:-1;;;1240:5:18;:21;;;1232:30;;1187:18;:76::i;:::-;1273:66;1292:5;-1:-1:-1;;;1321:5:18;:16;;;1313:25;;1273:18;:66::i;:::-;1349:84;1368:5;-1:-1:-1;;;1406:5:18;:25;;;1398:34;;1349:18;:84::i;:::-;1443:96;1462:5;-1:-1:-1;;;1506:5:18;:31;;;1498:40;;1443:18;:96::i;:::-;1549;1568:5;-1:-1:-1;;;1612:5:18;:31;;;1604:40;;1549:18;:96::i;:::-;1655:106;1674:5;1655:106;1723:5;:36;;;1715:45;;1655:18;:106::i;:::-;1771:74;1790:5;-1:-1:-1;;;1823:5:18;:20;;;1815:29;;1771:18;:74::i;:::-;1856:78;1875:5;-1:-1:-1;;;1910:5:18;:22;;;1902:31;;1856:18;:78::i;:::-;1944:62;1963:5;-1:-1:-1;;;1990:5:18;:14;;;1982:23;;1944:18;:62::i;:::-;2016:80;2035:5;-1:-1:-1;;;2071:5:18;:23;;;2063:32;;2016:18;:80::i;:::-;2106:70;2125:5;-1:-1:-1;;;2156:5:18;:18;;;2148:27;;2106:18;:70::i;:::-;2186:78;2205:5;-1:-1:-1;;;2240:5:18;:22;;;2232:31;;2186:18;:78::i;:::-;2274:72;2293:5;-1:-1:-1;;;2325:5:18;:19;;;2317:28;;2274:18;:72::i;7273:515::-;7411:5;-1:-1:-1;;;7436:12:18;:46;7432:350;;;-1:-1:-1;;;;7519:40:18;;;;:17;;;:40;;;;;;7563:3;7519:47;7498:70;;7432:350;-1:-1:-1;;;7589:12:18;:48;7585:197;;;-1:-1:-1;;;;7674:42:18;;;;:17;;;:42;;;;;;7720:3;7674:49;7653:72;;7585:197;-1:-1:-1;7769:1:18;7756:15;;166:252;314:31;;;;:17;;;:31;;;;;;:40;;310:53;;;356:7;;310:53;372:31;;;;:17;;;:31;;;;;:39;;;166:252;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;414:180::-;506:20;;16412:1;16402:12;;16392:2;;16428:1;;16418:12;4441:241;;4545:2;4533:9;4524:7;4520:23;4516:32;4513:2;;;-1:-1;;4551:12;4513:2;-1:-1;209:20;;4507:175;-1:-1;4507:175::o;4689:366::-;;;4810:2;4798:9;4789:7;4785:23;4781:32;4778:2;;;-1:-1;;4816:12;4778:2;222:6;209:20;4868:63;;4968:2;5011:9;5007:22;72:20;97:33;124:5;97:33;:::i;:::-;4976:63;;;;4772:283;;;;;:::o;5062:366::-;;;5183:2;5171:9;5162:7;5158:23;5154:32;5151:2;;;-1:-1;;5189:12;5151:2;-1:-1;;209:20;;;5341:2;5380:22;;;209:20;;-1:-1;5145:283::o;5435:489::-;;;;5572:2;5560:9;5551:7;5547:23;5543:32;5540:2;;;-1:-1;;5578:12;5540:2;209:20;;;-1:-1;5730:2;5768:22;;345:20;-1:-1;;;;;;15036:78;;16254:34;;16244:2;;-1:-1;;16292:12;16244:2;5738:62;-1:-1;5837:2;5876:22;;72:20;97:33;72:20;97:33;:::i;:::-;5845:63;;;;5534:390;;;;;:::o;5931:419::-;;;6066:9;6057:7;6053:23;6078:3;6053:23;6049:33;6046:2;;;-1:-1;;6085:12;6046:2;209:20;;;-1:-1;867:3;-1:-1;;849:16;;845:26;842:2;;;-1:-1;;874:12;842:2;;6237;6306:9;6302:22;6245:89;;6040:310;;;;;:::o;6357:290::-;;6485:3;;6473:9;6464:7;6460:23;6456:33;6453:2;;;-1:-1;;6492:12;6453:2;1092:22;6485:3;1092:22;:::i;:::-;1211:74;1281:3;1257:22;1211:74;:::i;:::-;1186:100;;1353:2;1407:22;;;4371:20;1368:16;;;1361:75;1510:2;1564:22;;;4371:20;1525:16;;;1518:75;1662:2;1716:22;;;4371:20;1677:16;;;1670:75;1814:3;1869:22;;;4371:20;1830:16;;;1823:75;1970:3;2025:22;;;4371:20;1986:16;;;1979:75;2124:3;2179:22;;;4371:20;2140:16;;;2133:75;2282:3;2336:22;;;667:20;2298:16;;;2291:74;2437:3;2493:22;;;667:20;2453:18;;;2446:76;2589:3;2645:22;;;667:20;2605:18;;;2598:76;2750:3;2806:22;;;667:20;2766:18;;;2759:76;2917:3;2973:22;;;667:20;2933:18;;;2926:76;3084:3;3140:22;;;667:20;3100:18;;;3093:76;3256:3;3312:22;;;667:20;3272:18;;;3265:76;3412:3;3468:22;;;667:20;3428:18;;;3421:76;3570:3;3626:22;;;667:20;3586:18;;;3579:76;3720:3;3776:22;;;667:20;3736:18;;;3729:76;3879:3;3935:22;;;667:20;3895:18;;;3888:76;4033:3;4089:22;;;667:20;4049:18;;;4042:76;4191:3;4247:22;;;667:20;4207:18;;;4200:76;;;;-1:-1;1193:16;;6447:200;-1:-1;;6447:200::o;6882:162::-;15919:1;15912:5;15909:12;15899:2;;15925:9;15899:2;6966:73;;6960:84::o;11982:210::-;14870:13;;14863:21;6719:34;;12103:2;12088:18;;12074:118::o;12199:218::-;-1:-1;;;;;;15036:78;;;;6834:36;;12324:2;12309:18;;12295:122::o;12424:218::-;7110:36;;;12549:2;12534:18;;12520:122::o;12649:416::-;12849:2;12863:47;;;7500:2;12834:18;;;14638:19;7536:34;14678:14;;;7516:55;-1:-1;;;7591:12;;;7584:39;7642:12;;;12820:245::o;13072:416::-;13272:2;13286:47;;;7893:2;13257:18;;;14638:19;7929:34;14678:14;;;7909:55;-1:-1;;;7984:12;;;7977:39;8035:12;;;13243:245::o;13495:319::-;;13670:3;13659:9;13655:19;13647:27;;8349:86;8420:14;8326:16;8320:23;8349:86;:::i;:::-;8520:4;8509:16;;;8503:23;8580:14;;;7110:36;8687:4;8676:16;;;8670:23;8747:14;;;7110:36;8849:4;8838:16;;;8832:23;8909:14;;;7110:36;9011:4;9000:16;;;8994:23;9071:14;;;7110:36;9176:4;9165:16;;;9159:23;9236:14;;;7110:36;9339:4;9328:16;;;9322:23;9399:14;;;7110:36;9506:4;9495:16;;;9489:23;9564:14;;;7110:36;9669:6;9658:18;;;9652:25;9729:16;;;7110:36;9831:6;9820:18;;;9814:25;9891:16;;;7110:36;10002:6;9991:18;;;9985:25;10062:16;;;7110:36;10179:6;10168:18;;;10162:25;10239:16;;;7110:36;10356:6;10345:18;;;10339:25;10416:16;;;7110:36;10538:6;10527:18;;;10521:25;10598:16;;;7110:36;10704:6;10693:18;;;10687:25;10764:16;;;7110:36;10872:6;10861:18;;;10855:25;10932:16;;;7110:36;11032:6;11021:18;;;11015:25;11092:16;;;7110:36;11201:6;11190:18;;;11184:25;11261:16;;;7110:36;11365:6;11354:18;;;11348:25;11425:16;;;7110:36;11533:6;11522:18;;;11516:25;11593:16;;;;7110:36;;;;13641:173;:::o;14050:214::-;15645:4;15634:16;;;;11935:35;;14173:2;14158:18;;14144:120::o;14271:256::-;14333:2;14327:9;14359:17;;;14434:18;14419:34;;14455:22;;;14416:62;14413:2;;;14491:1;;14481:12;14413:2;14333;14500:22;14311:216;;-1:-1;14311:216::o;15948:117::-;-1:-1;;;;;15429:54;;16007:35;;15997:2;;16056:1;;16046:12;15997:2;15991:74;:::o",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"../BaseRegistryStorage.sol\";\nimport \"../AccessControl/AccessControl.sol\";\nimport \"./IStateRegistry.sol\";\n\n\n/**\n * @title StateRegistry\n */\ncontract StateRegistry is BaseRegistryStorage, AccessControl, IStateRegistry {\n\n    event UpdatedState(bytes32 indexed assetId, uint256 statusDate);\n    event UpdatedFinalizedState(bytes32 indexed assetId, uint256 statusDate);\n\n\n    /**\n     * @notice Returns the state of an asset.\n     * @param assetId id of the asset\n     * @return state of the asset\n     */\n    function getState(bytes32 assetId)\n        external\n        view\n        override\n        returns (State memory)\n    {\n        return assets[assetId].decodeAndGetState();\n    }\n\n    /**\n     * @notice Returns the state of an asset.\n     * @param assetId id of the asset\n     * @return state of the asset\n     */\n    function getFinalizedState(bytes32 assetId)\n        external\n        view\n        override\n        returns (State memory)\n    {\n        return assets[assetId].decodeAndGetFinalizedState();\n    }\n\n    function getEnumValueForStateAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override\n        returns (uint8)\n    {\n        return assets[assetId].decodeAndGetEnumValueForStateAttribute(attribute);\n    }\n\n    function getIntValueForStateAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override\n        returns (int256)\n    {\n        return assets[assetId].decodeAndGetIntValueForForStateAttribute(attribute);\n    }\n\n    function getUintValueForStateAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override\n        returns (uint256)\n    {\n        return assets[assetId].decodeAndGetUIntValueForForStateAttribute(attribute);\n    }\n\n    /**\n     * @notice Sets next state of an asset.\n     * @dev Can only be updated by the assets actor or by an authorized account.\n     * @param assetId id of the asset\n     * @param state next state of the asset\n     */\n    function setState(bytes32 assetId, State calldata state)\n        external\n        override\n        isAuthorized (assetId)\n    {\n        assets[assetId].encodeAndSetState(state);\n        emit UpdatedState(assetId, state.statusDate);\n    }\n\n    /**\n     * @notice Sets next finalized state of an asset.\n     * @dev Can only be updated by the assets actor or by an authorized account.\n     * @param assetId id of the asset\n     * @param state next state of the asset\n     */\n    function setFinalizedState(bytes32 assetId, State calldata state)\n        external\n        override\n        isAuthorized (assetId)\n    {\n        assets[assetId].encodeAndSetFinalizedState(state);\n        emit UpdatedFinalizedState(assetId, state.statusDate);\n    }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol",
    "exportedSymbols": {
      "StateRegistry": [
        6817
      ]
    },
    "id": 6818,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6655,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:19"
      },
      {
        "id": 6656,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:19"
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol",
        "file": "../BaseRegistryStorage.sol",
        "id": 6657,
        "nodeType": "ImportDirective",
        "scope": 6818,
        "sourceUnit": 4479,
        "src": "101:36:19",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol",
        "file": "../AccessControl/AccessControl.sol",
        "id": 6658,
        "nodeType": "ImportDirective",
        "scope": 6818,
        "sourceUnit": 4084,
        "src": "138:44:19",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol",
        "file": "./IStateRegistry.sol",
        "id": 6659,
        "nodeType": "ImportDirective",
        "scope": 6818,
        "sourceUnit": 5777,
        "src": "183:30:19",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6661,
              "name": "BaseRegistryStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4478,
              "src": "274:19:19",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistryStorage_$4478",
                "typeString": "contract BaseRegistryStorage"
              }
            },
            "id": 6662,
            "nodeType": "InheritanceSpecifier",
            "src": "274:19:19"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6663,
              "name": "AccessControl",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4083,
              "src": "295:13:19",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AccessControl_$4083",
                "typeString": "contract AccessControl"
              }
            },
            "id": 6664,
            "nodeType": "InheritanceSpecifier",
            "src": "295:13:19"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6665,
              "name": "IStateRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5776,
              "src": "310:14:19",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IStateRegistry_$5776",
                "typeString": "contract IStateRegistry"
              }
            },
            "id": 6666,
            "nodeType": "InheritanceSpecifier",
            "src": "310:14:19"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4478,
          5776
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 6660,
          "nodeType": "StructuredDocumentation",
          "src": "216:31:19",
          "text": " @title StateRegistry"
        },
        "fullyImplemented": true,
        "id": 6817,
        "linearizedBaseContracts": [
          6817,
          5776,
          4083,
          4125,
          4478
        ],
        "name": "StateRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 6672,
            "name": "UpdatedState",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6668,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6672,
                  "src": "351:23:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6667,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "351:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6670,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "statusDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6672,
                  "src": "376:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6669,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "376:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "350:45:19"
            },
            "src": "332:64:19"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6678,
            "name": "UpdatedFinalizedState",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6674,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6678,
                  "src": "429:23:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6673,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "429:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6676,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "statusDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6678,
                  "src": "454:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "454:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "428:45:19"
            },
            "src": "401:73:19"
          },
          {
            "baseFunctions": [
              5727
            ],
            "body": {
              "id": 6693,
              "nodeType": "Block",
              "src": "732:59:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6687,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "749:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6689,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6688,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6681,
                          "src": "756:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "749:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6690,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6399,
                      "src": "749:33:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct State memory)"
                      }
                    },
                    "id": 6691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "749:35:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 6686,
                  "id": 6692,
                  "nodeType": "Return",
                  "src": "742:42:19"
                }
              ]
            },
            "documentation": {
              "id": 6679,
              "nodeType": "StructuredDocumentation",
              "src": "481:129:19",
              "text": " @notice Returns the state of an asset.\n @param assetId id of the asset\n @return state of the asset"
            },
            "functionSelector": "09648a9d",
            "id": 6694,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6683,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "688:8:19"
            },
            "parameters": {
              "id": 6682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6681,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6694,
                  "src": "633:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6680,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "633:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "632:17:19"
            },
            "returnParameters": {
              "id": 6686,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6685,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6694,
                  "src": "714:12:19",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6684,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "714:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "713:14:19"
            },
            "scope": 6817,
            "src": "615:176:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              5734
            ],
            "body": {
              "id": 6709,
              "nodeType": "Block",
              "src": "1057:68:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6703,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1074:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6705,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6704,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6697,
                          "src": "1081:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1074:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6706,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetFinalizedState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6558,
                      "src": "1074:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct State memory)"
                      }
                    },
                    "id": 6707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1074:44:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 6702,
                  "id": 6708,
                  "nodeType": "Return",
                  "src": "1067:51:19"
                }
              ]
            },
            "documentation": {
              "id": 6695,
              "nodeType": "StructuredDocumentation",
              "src": "797:129:19",
              "text": " @notice Returns the state of an asset.\n @param assetId id of the asset\n @return state of the asset"
            },
            "functionSelector": "37462dba",
            "id": 6710,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFinalizedState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6699,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1013:8:19"
            },
            "parameters": {
              "id": 6698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6697,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6710,
                  "src": "958:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6696,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "958:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "957:17:19"
            },
            "returnParameters": {
              "id": 6702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6701,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6710,
                  "src": "1039:12:19",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6700,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1039:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1038:14:19"
            },
            "scope": 6817,
            "src": "931:194:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              5743
            ],
            "body": {
              "id": 6727,
              "nodeType": "Block",
              "src": "1279:89:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6724,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6714,
                        "src": "1351:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6720,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1296:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6722,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6721,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6712,
                          "src": "1303:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1296:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6723,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForStateAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6616,
                      "src": "1296:54:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 6725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1296:65:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 6719,
                  "id": 6726,
                  "nodeType": "Return",
                  "src": "1289:72:19"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cf5aed12",
            "id": 6728,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForStateAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6716,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1242:8:19"
            },
            "parameters": {
              "id": 6715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6712,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6728,
                  "src": "1170:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6711,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1170:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6714,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6728,
                  "src": "1187:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6713,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1187:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1169:36:19"
            },
            "returnParameters": {
              "id": 6719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6718,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6728,
                  "src": "1268:5:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6717,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1267:7:19"
            },
            "scope": 6817,
            "src": "1131:237:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              5752
            ],
            "body": {
              "id": 6745,
              "nodeType": "Block",
              "src": "1522:91:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6742,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6732,
                        "src": "1596:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6738,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1539:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6740,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6739,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6730,
                          "src": "1546:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1539:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6741,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForStateAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6652,
                      "src": "1539:56:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 6743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1539:67:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 6737,
                  "id": 6744,
                  "nodeType": "Return",
                  "src": "1532:74:19"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6a899b9b",
            "id": 6746,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForStateAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6734,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1484:8:19"
            },
            "parameters": {
              "id": 6733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6730,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6746,
                  "src": "1412:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6729,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1412:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6732,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6746,
                  "src": "1429:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6731,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1429:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1411:36:19"
            },
            "returnParameters": {
              "id": 6737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6736,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6746,
                  "src": "1510:6:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 6735,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1510:6:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1509:8:19"
            },
            "scope": 6817,
            "src": "1374:239:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              5761
            ],
            "body": {
              "id": 6763,
              "nodeType": "Block",
              "src": "1769:92:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6760,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6750,
                        "src": "1844:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6756,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1786:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6758,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6757,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6748,
                          "src": "1793:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1786:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6759,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForStateAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6634,
                      "src": "1786:57:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 6761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1786:68:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6755,
                  "id": 6762,
                  "nodeType": "Return",
                  "src": "1779:75:19"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "606aa07e",
            "id": 6764,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUintValueForStateAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6752,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1730:8:19"
            },
            "parameters": {
              "id": 6751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6748,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6764,
                  "src": "1658:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6747,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1658:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6750,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6764,
                  "src": "1675:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6749,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1675:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1657:36:19"
            },
            "returnParameters": {
              "id": 6755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6754,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6764,
                  "src": "1756:7:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6753,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1756:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1755:9:19"
            },
            "scope": 6817,
            "src": "1619:242:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              5768
            ],
            "body": {
              "id": 6789,
              "nodeType": "Block",
              "src": "2216:111:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6780,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6769,
                        "src": "2260:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6776,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2226:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6778,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6777,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6767,
                          "src": "2233:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2226:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6779,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6023,
                      "src": "2226:33:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_State_$22673_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct State memory)"
                      }
                    },
                    "id": 6781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2226:40:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6782,
                  "nodeType": "ExpressionStatement",
                  "src": "2226:40:19"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6784,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6767,
                        "src": "2294:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6785,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6769,
                          "src": "2303:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                            "typeString": "struct State calldata"
                          }
                        },
                        "id": 6786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "statusDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22636,
                        "src": "2303:16:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6783,
                      "name": "UpdatedState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6672,
                      "src": "2281:12:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 6787,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2281:39:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6788,
                  "nodeType": "EmitStatement",
                  "src": "2276:44:19"
                }
              ]
            },
            "documentation": {
              "id": 6765,
              "nodeType": "StructuredDocumentation",
              "src": "1867:218:19",
              "text": " @notice Sets next state of an asset.\n @dev Can only be updated by the assets actor or by an authorized account.\n @param assetId id of the asset\n @param state next state of the asset"
            },
            "functionSelector": "7d870dd4",
            "id": 6790,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6773,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6767,
                    "src": "2203:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 6774,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6772,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2189:12:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2189:22:19"
              }
            ],
            "name": "setState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6771,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2172:8:19"
            },
            "parameters": {
              "id": 6770,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6767,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6790,
                  "src": "2108:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6766,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2108:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6769,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6790,
                  "src": "2125:20:19",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6768,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2125:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2107:39:19"
            },
            "returnParameters": {
              "id": 6775,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2216:0:19"
            },
            "scope": 6817,
            "src": "2090:237:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              5775
            ],
            "body": {
              "id": 6815,
              "nodeType": "Block",
              "src": "2701:129:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6806,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6795,
                        "src": "2754:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6802,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2711:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6804,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6803,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6793,
                          "src": "2718:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2711:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6805,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetFinalizedState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6240,
                      "src": "2711:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_State_$22673_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct State memory)"
                      }
                    },
                    "id": 6807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2711:49:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6808,
                  "nodeType": "ExpressionStatement",
                  "src": "2711:49:19"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6810,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6793,
                        "src": "2797:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6811,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6795,
                          "src": "2806:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                            "typeString": "struct State calldata"
                          }
                        },
                        "id": 6812,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "statusDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22636,
                        "src": "2806:16:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6809,
                      "name": "UpdatedFinalizedState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6678,
                      "src": "2775:21:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 6813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2775:48:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6814,
                  "nodeType": "EmitStatement",
                  "src": "2770:53:19"
                }
              ]
            },
            "documentation": {
              "id": 6791,
              "nodeType": "StructuredDocumentation",
              "src": "2333:228:19",
              "text": " @notice Sets next finalized state of an asset.\n @dev Can only be updated by the assets actor or by an authorized account.\n @param assetId id of the asset\n @param state next state of the asset"
            },
            "functionSelector": "67fe5d70",
            "id": 6816,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6799,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6793,
                    "src": "2688:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 6800,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6798,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2674:12:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2674:22:19"
              }
            ],
            "name": "setFinalizedState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6797,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2657:8:19"
            },
            "parameters": {
              "id": 6796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6793,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6816,
                  "src": "2593:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6792,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2593:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6795,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6816,
                  "src": "2610:20:19",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6794,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2610:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2592:39:19"
            },
            "returnParameters": {
              "id": 6801,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2701:0:19"
            },
            "scope": 6817,
            "src": "2566:264:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6818,
        "src": "248:2584:19"
      }
    ],
    "src": "41:2792:19"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol",
    "exportedSymbols": {
      "StateRegistry": [
        6817
      ]
    },
    "id": 6818,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6655,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:19"
      },
      {
        "id": 6656,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:19"
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol",
        "file": "../BaseRegistryStorage.sol",
        "id": 6657,
        "nodeType": "ImportDirective",
        "scope": 6818,
        "sourceUnit": 4479,
        "src": "101:36:19",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol",
        "file": "../AccessControl/AccessControl.sol",
        "id": 6658,
        "nodeType": "ImportDirective",
        "scope": 6818,
        "sourceUnit": 4084,
        "src": "138:44:19",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol",
        "file": "./IStateRegistry.sol",
        "id": 6659,
        "nodeType": "ImportDirective",
        "scope": 6818,
        "sourceUnit": 5777,
        "src": "183:30:19",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6661,
              "name": "BaseRegistryStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4478,
              "src": "274:19:19",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistryStorage_$4478",
                "typeString": "contract BaseRegistryStorage"
              }
            },
            "id": 6662,
            "nodeType": "InheritanceSpecifier",
            "src": "274:19:19"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6663,
              "name": "AccessControl",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4083,
              "src": "295:13:19",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AccessControl_$4083",
                "typeString": "contract AccessControl"
              }
            },
            "id": 6664,
            "nodeType": "InheritanceSpecifier",
            "src": "295:13:19"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6665,
              "name": "IStateRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5776,
              "src": "310:14:19",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IStateRegistry_$5776",
                "typeString": "contract IStateRegistry"
              }
            },
            "id": 6666,
            "nodeType": "InheritanceSpecifier",
            "src": "310:14:19"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4478,
          5776
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 6660,
          "nodeType": "StructuredDocumentation",
          "src": "216:31:19",
          "text": " @title StateRegistry"
        },
        "fullyImplemented": true,
        "id": 6817,
        "linearizedBaseContracts": [
          6817,
          5776,
          4083,
          4125,
          4478
        ],
        "name": "StateRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 6672,
            "name": "UpdatedState",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6668,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6672,
                  "src": "351:23:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6667,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "351:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6670,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "statusDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6672,
                  "src": "376:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6669,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "376:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "350:45:19"
            },
            "src": "332:64:19"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6678,
            "name": "UpdatedFinalizedState",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6674,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6678,
                  "src": "429:23:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6673,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "429:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6676,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "statusDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6678,
                  "src": "454:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "454:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "428:45:19"
            },
            "src": "401:73:19"
          },
          {
            "baseFunctions": [
              5727
            ],
            "body": {
              "id": 6693,
              "nodeType": "Block",
              "src": "732:59:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6687,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "749:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6689,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6688,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6681,
                          "src": "756:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "749:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6690,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6399,
                      "src": "749:33:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct State memory)"
                      }
                    },
                    "id": 6691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "749:35:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 6686,
                  "id": 6692,
                  "nodeType": "Return",
                  "src": "742:42:19"
                }
              ]
            },
            "documentation": {
              "id": 6679,
              "nodeType": "StructuredDocumentation",
              "src": "481:129:19",
              "text": " @notice Returns the state of an asset.\n @param assetId id of the asset\n @return state of the asset"
            },
            "functionSelector": "09648a9d",
            "id": 6694,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6683,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "688:8:19"
            },
            "parameters": {
              "id": 6682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6681,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6694,
                  "src": "633:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6680,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "633:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "632:17:19"
            },
            "returnParameters": {
              "id": 6686,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6685,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6694,
                  "src": "714:12:19",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6684,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "714:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "713:14:19"
            },
            "scope": 6817,
            "src": "615:176:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              5734
            ],
            "body": {
              "id": 6709,
              "nodeType": "Block",
              "src": "1057:68:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6703,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1074:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6705,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6704,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6697,
                          "src": "1081:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1074:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6706,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetFinalizedState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6558,
                      "src": "1074:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct State memory)"
                      }
                    },
                    "id": 6707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1074:44:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 6702,
                  "id": 6708,
                  "nodeType": "Return",
                  "src": "1067:51:19"
                }
              ]
            },
            "documentation": {
              "id": 6695,
              "nodeType": "StructuredDocumentation",
              "src": "797:129:19",
              "text": " @notice Returns the state of an asset.\n @param assetId id of the asset\n @return state of the asset"
            },
            "functionSelector": "37462dba",
            "id": 6710,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFinalizedState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6699,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1013:8:19"
            },
            "parameters": {
              "id": 6698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6697,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6710,
                  "src": "958:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6696,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "958:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "957:17:19"
            },
            "returnParameters": {
              "id": 6702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6701,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6710,
                  "src": "1039:12:19",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6700,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1039:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1038:14:19"
            },
            "scope": 6817,
            "src": "931:194:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              5743
            ],
            "body": {
              "id": 6727,
              "nodeType": "Block",
              "src": "1279:89:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6724,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6714,
                        "src": "1351:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6720,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1296:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6722,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6721,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6712,
                          "src": "1303:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1296:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6723,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForStateAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6616,
                      "src": "1296:54:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 6725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1296:65:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 6719,
                  "id": 6726,
                  "nodeType": "Return",
                  "src": "1289:72:19"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cf5aed12",
            "id": 6728,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForStateAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6716,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1242:8:19"
            },
            "parameters": {
              "id": 6715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6712,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6728,
                  "src": "1170:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6711,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1170:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6714,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6728,
                  "src": "1187:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6713,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1187:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1169:36:19"
            },
            "returnParameters": {
              "id": 6719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6718,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6728,
                  "src": "1268:5:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6717,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1267:7:19"
            },
            "scope": 6817,
            "src": "1131:237:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              5752
            ],
            "body": {
              "id": 6745,
              "nodeType": "Block",
              "src": "1522:91:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6742,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6732,
                        "src": "1596:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6738,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1539:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6740,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6739,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6730,
                          "src": "1546:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1539:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6741,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForStateAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6652,
                      "src": "1539:56:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 6743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1539:67:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 6737,
                  "id": 6744,
                  "nodeType": "Return",
                  "src": "1532:74:19"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6a899b9b",
            "id": 6746,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForStateAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6734,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1484:8:19"
            },
            "parameters": {
              "id": 6733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6730,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6746,
                  "src": "1412:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6729,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1412:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6732,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6746,
                  "src": "1429:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6731,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1429:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1411:36:19"
            },
            "returnParameters": {
              "id": 6737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6736,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6746,
                  "src": "1510:6:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 6735,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1510:6:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1509:8:19"
            },
            "scope": 6817,
            "src": "1374:239:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              5761
            ],
            "body": {
              "id": 6763,
              "nodeType": "Block",
              "src": "1769:92:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6760,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6750,
                        "src": "1844:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6756,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1786:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6758,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6757,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6748,
                          "src": "1793:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1786:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6759,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForStateAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6634,
                      "src": "1786:57:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 6761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1786:68:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6755,
                  "id": 6762,
                  "nodeType": "Return",
                  "src": "1779:75:19"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "606aa07e",
            "id": 6764,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUintValueForStateAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6752,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1730:8:19"
            },
            "parameters": {
              "id": 6751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6748,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6764,
                  "src": "1658:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6747,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1658:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6750,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6764,
                  "src": "1675:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6749,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1675:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1657:36:19"
            },
            "returnParameters": {
              "id": 6755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6754,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6764,
                  "src": "1756:7:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6753,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1756:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1755:9:19"
            },
            "scope": 6817,
            "src": "1619:242:19",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              5768
            ],
            "body": {
              "id": 6789,
              "nodeType": "Block",
              "src": "2216:111:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6780,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6769,
                        "src": "2260:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6776,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2226:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6778,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6777,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6767,
                          "src": "2233:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2226:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6779,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6023,
                      "src": "2226:33:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_State_$22673_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct State memory)"
                      }
                    },
                    "id": 6781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2226:40:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6782,
                  "nodeType": "ExpressionStatement",
                  "src": "2226:40:19"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6784,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6767,
                        "src": "2294:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6785,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6769,
                          "src": "2303:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                            "typeString": "struct State calldata"
                          }
                        },
                        "id": 6786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "statusDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22636,
                        "src": "2303:16:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6783,
                      "name": "UpdatedState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6672,
                      "src": "2281:12:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 6787,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2281:39:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6788,
                  "nodeType": "EmitStatement",
                  "src": "2276:44:19"
                }
              ]
            },
            "documentation": {
              "id": 6765,
              "nodeType": "StructuredDocumentation",
              "src": "1867:218:19",
              "text": " @notice Sets next state of an asset.\n @dev Can only be updated by the assets actor or by an authorized account.\n @param assetId id of the asset\n @param state next state of the asset"
            },
            "functionSelector": "7d870dd4",
            "id": 6790,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6773,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6767,
                    "src": "2203:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 6774,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6772,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2189:12:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2189:22:19"
              }
            ],
            "name": "setState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6771,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2172:8:19"
            },
            "parameters": {
              "id": 6770,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6767,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6790,
                  "src": "2108:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6766,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2108:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6769,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6790,
                  "src": "2125:20:19",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6768,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2125:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2107:39:19"
            },
            "returnParameters": {
              "id": 6775,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2216:0:19"
            },
            "scope": 6817,
            "src": "2090:237:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              5775
            ],
            "body": {
              "id": 6815,
              "nodeType": "Block",
              "src": "2701:129:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6806,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6795,
                        "src": "2754:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6802,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2711:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 6804,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6803,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6793,
                          "src": "2718:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2711:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 6805,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetFinalizedState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6240,
                      "src": "2711:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_State_$22673_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct State memory)"
                      }
                    },
                    "id": 6807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2711:49:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6808,
                  "nodeType": "ExpressionStatement",
                  "src": "2711:49:19"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6810,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6793,
                        "src": "2797:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6811,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6795,
                          "src": "2806:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                            "typeString": "struct State calldata"
                          }
                        },
                        "id": 6812,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "statusDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22636,
                        "src": "2806:16:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6809,
                      "name": "UpdatedFinalizedState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6678,
                      "src": "2775:21:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 6813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2775:48:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6814,
                  "nodeType": "EmitStatement",
                  "src": "2770:53:19"
                }
              ]
            },
            "documentation": {
              "id": 6791,
              "nodeType": "StructuredDocumentation",
              "src": "2333:228:19",
              "text": " @notice Sets next finalized state of an asset.\n @dev Can only be updated by the assets actor or by an authorized account.\n @param assetId id of the asset\n @param state next state of the asset"
            },
            "functionSelector": "67fe5d70",
            "id": 6816,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6799,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6793,
                    "src": "2688:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 6800,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6798,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2674:12:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2674:22:19"
              }
            ],
            "name": "setFinalizedState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6797,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2657:8:19"
            },
            "parameters": {
              "id": 6796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6793,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6816,
                  "src": "2593:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6792,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2593:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6795,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6816,
                  "src": "2610:20:19",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6794,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2610:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2592:39:19"
            },
            "returnParameters": {
              "id": 6801,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2701:0:19"
            },
            "scope": 6817,
            "src": "2566:264:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6818,
        "src": "248:2584:19"
      }
    ],
    "src": "41:2792:19"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.731Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "getFinalizedState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "grantAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to grant access to",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "hasAccess(bytes32,bytes4,address)": {
        "params": {
          "account": "address of the account for which to check access",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        },
        "returns": {
          "_0": "true if allowed access"
        }
      },
      "hasRootAccess(bytes32,address)": {
        "params": {
          "account": "address of the account for which to check root acccess",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if has root access"
        }
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to revoke access for",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      }
    },
    "title": "StateRegistry",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "getFinalizedState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "grantAccess(bytes32,bytes4,address)": {
        "notice": "Grant access to an account to call a specific method on a specific asset."
      },
      "hasAccess(bytes32,bytes4,address)": {
        "notice": "Check whether an account is allowed to call a specific method on a specific asset."
      },
      "hasRootAccess(bytes32,address)": {
        "notice": "Check whether an account has root access for a specific asset."
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "notice": "Revoke access for an account to call a specific method on a specific asset."
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next finalized state of an asset."
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next state of an asset."
      }
    },
    "version": 1
  }
}