{
  "contractName": "RenderableERC223Token",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "mintingFinished",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "spender",
          "type": "address"
        },
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "checkRole",
      "outputs": [],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "activate",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_Token",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "activated",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_ERC165",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxMintable",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_maxMintable",
          "type": "uint256"
        }
      ],
      "name": "setMaxMintable",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_minter",
          "type": "address"
        }
      ],
      "name": "removeMinter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "pausable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "initialSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "mintable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseApproval",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "template",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finishMinting",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "renderer",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ROLE_MINTER",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_minter",
          "type": "address"
        }
      ],
      "name": "addMinter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "burnable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseApproval",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_name",
          "type": "string"
        },
        {
          "name": "_symbol",
          "type": "string"
        },
        {
          "name": "_decimals",
          "type": "uint8"
        },
        {
          "name": "_initialSupply",
          "type": "uint256"
        },
        {
          "name": "_mintable",
          "type": "bool"
        },
        {
          "name": "_burnable",
          "type": "bool"
        },
        {
          "name": "_pausable",
          "type": "bool"
        }
      ],
      "name": "update",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_data",
          "type": "bytes"
        },
        {
          "name": "_custom_fallback",
          "type": "string"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_ERC223Token",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_Contract",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_name",
          "type": "string"
        },
        {
          "name": "_symbol",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "role",
          "type": "string"
        }
      ],
      "name": "RoleAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "role",
          "type": "string"
        }
      ],
      "name": "RoleRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "MintFinished",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "burner",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        }
      ],
      "name": "adminWidgets",
      "outputs": [
        {
          "name": "jsonObject",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        }
      ],
      "name": "userWidgets",
      "outputs": [
        {
          "name": "jsonObject",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        }
      ],
      "name": "inputs",
      "outputs": [
        {
          "name": "jsonArray",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526008805461ffff19169055600a805460ff191660121790553480156200002957600080fd5b50604051620029c5380380620029c5833981016040908152815160208301519183015160038054600160a060020a031916331790559092918201910182828282828282620000a07f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620001b9810204565b600160a060020a0381161515620000b657600080fd5b6005805433600160a060020a03199182161790915560038054909116600160a060020a038316179055620001137f6125ede500000000000000000000000000000000000000000000000000000000640100000000620001b9810204565b5081516200012990600690602085019062000226565b5080516200013f90600790602084019062000226565b50620001747ffd155c6700000000000000000000000000000000000000000000000000000000640100000000620001b9810204565b50620001ad91507fd0c381c9000000000000000000000000000000000000000000000000000000009050640100000000620001b9810204565b505050505050620002cb565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e957600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600460205260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026957805160ff191683800117855562000299565b8280016001018555821562000299579182015b82811115620002995782518255916020019190600101906200027c565b50620002a7929150620002ab565b5090565b620002c891905b80821115620002a75760008155600101620002b2565b90565b6126ea80620002db6000396000f3006080604052600436106102215763ffffffff60e060020a60003504166301bd3411811461022657806301ffc9a7146102f457806305d2035b1461033f57806306fdde0314610354578063095ea7b3146103695780630988ca8c1461038d5780630f15f4c0146103f6578063172d02bd1461040b57806318160ddd14610452578063186601ca1461047957806319fa8f501461048e5780632154dc39146104a3578063217fe6c6146104b857806323b872dd1461051f57806325d387b5146105495780633092afd514610561578063313ce5671461058257806336775847146105ad578063378dc3dc146105c25780633f4ba83a146105d757806340c10f19146105ec57806342966c68146106105780634bf365df146106285780635c975abb1461063d57806366188463146106525780636f2ddd931461067657806370a08231146106a7578063715018a6146106c85780637d64bcb4146106dd5780638456cb59146106f25780638ada6b0f146107075780638da5cb5b1461071c578063908ba6481461073157806392afc33a1461078a57806395d89b411461079f578063983b2d56146107b4578063a07c7ce4146107d5578063a3a8fd2c146107ea578063a9059cbb14610843578063be45fd6214610867578063d73dd623146108d0578063dd62ed3e146108f4578063f2226de61461091b578063f2fde38b146109d2578063f6368f8a146109f3578063fb499abc14610a9a578063fbf964eb14610aaf575b600080fd5b34801561023257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f943694929360249392840191908190840183828082843750949750610ac49650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b95781810151838201526020016102a1565b50505050905090810190601f1680156102e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030057600080fd5b5061032b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610c2d565b604080519115158252519081900360200190f35b34801561034b57600080fd5b5061032b610c61565b34801561036057600080fd5b5061027f610c6f565b34801561037557600080fd5b5061032b600160a060020a0360043516602435610cfd565b34801561039957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103f4958335600160a060020a0316953695604494919390910191908190840183828082843750949750610d299650505050505050565b005b34801561040257600080fd5b5061032b610d97565b34801561041757600080fd5b50610420610de2565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561045e57600080fd5b50610467610e06565b60408051918252519081900360200190f35b34801561048557600080fd5b5061032b610e0c565b34801561049a57600080fd5b50610420610e1c565b3480156104af57600080fd5b50610467610e40565b3480156104c457600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261032b958335600160a060020a0316953695604494919390910191908190840183828082843750949750610e469650505050505050565b34801561052b57600080fd5b5061032b600160a060020a0360043581169060243516604435610eb2565b34801561055557600080fd5b506103f4600435610ee0565b34801561056d57600080fd5b506103f4600160a060020a0360043516610f13565b34801561058e57600080fd5b50610597610f5a565b6040805160ff9092168252519081900360200190f35b3480156105b957600080fd5b5061032b610f63565b3480156105ce57600080fd5b50610467610f71565b3480156105e357600080fd5b506103f4610f77565b3480156105f857600080fd5b5061032b600160a060020a0360043516602435610fd4565b34801561061c57600080fd5b506103f4600435611036565b34801561063457600080fd5b5061032b611068565b34801561064957600080fd5b5061032b611071565b34801561065e57600080fd5b5061032b600160a060020a036004351660243561107a565b34801561068257600080fd5b5061068b611097565b60408051600160a060020a039092168252519081900360200190f35b3480156106b357600080fd5b50610467600160a060020a03600435166110a6565b3480156106d457600080fd5b506103f46110c1565b3480156106e957600080fd5b5061032b61112f565b3480156106fe57600080fd5b506103f461119c565b34801561071357600080fd5b5061068b6111d4565b34801561072857600080fd5b5061068b6111ec565b34801561073d57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f9436949293602493928401919081908401838280828437509497506111fb9650505050505050565b34801561079657600080fd5b5061027f611288565b3480156107ab57600080fd5b5061027f6112ad565b3480156107c057600080fd5b506103f4600160a060020a0360043516611308565b3480156107e157600080fd5b5061032b61134c565b3480156107f657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f9436949293602493928401919081908401838280828437509497506113559650505050505050565b34801561084f57600080fd5b5061032b600160a060020a03600435166024356113e2565b34801561087357600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261032b948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506114079650505050505050565b3480156108dc57600080fd5b5061032b600160a060020a036004351660243561142d565b34801561090057600080fd5b50610467600160a060020a036004358116906024351661144a565b34801561092757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103f494369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff85351695505050602083013592604081013515159250606081013515159150608001351515611475565b3480156109de57600080fd5b506103f4600160a060020a0360043516611518565b3480156109ff57600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261032b948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506115389650505050505050565b348015610aa657600080fd5b50610420611568565b348015610abb57600080fd5b5061042061158c565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363bf3bed549387939092918291606490910190602086019080838360005b83811015610b52578181015183820152602001610b3a565b50505050905090810190601f168015610b7f5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610b9f57600080fd5b505af1158015610bb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bdc57600080fd5b810190808051640100000000811115610bf457600080fd5b82016020810184811115610c0757600080fd5b8151640100000000811182820187101715610c2157600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b600854610100900460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cf55780601f10610cca57610100808354040283529160200191610cf5565b820191906000526020600020905b815481529060010190602001808311610cd857829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610d1857600080fd5b610d2283836115b0565b9392505050565b610d93826009836040518082805190602001908083835b60208310610d5f5780518252601f199092019160209182019101610d40565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506115cd565b5050565b60055460009060a060020a900460ff1615610db157600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610ddc6115e2565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600d5481565b6000610d22836009846040518082805190602001908083835b60208310610e7e5780518252601f199092019160209182019101610e5f565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611604565b60055460009060a060020a900460ff161515610ecd57600080fd5b610ed8848484611623565b949350505050565b600354600160a060020a03163314610ef757600080fd5b60055460a060020a900460ff1615610f0e57600080fd5b600d55565b600354600160a060020a03163314610f2a57600080fd5b610f578160408051908101604052806006815260200160008051602061269f833981519152815250611641565b50565b600a5460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610f8e57600080fd5b60085460ff161515610f9f57600080fd5b6008805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600c5460009060ff161515610fe857600080fd5b60055460a060020a900460ff16151561100057600080fd5b6000600d54111561102c57600d54600154611021908463ffffffff61175216565b111561102c57600080fd5b610d228383611765565b600e5460ff16151561104757600080fd5b60055460a060020a900460ff16151561105f57600080fd5b610f5781611882565b600c5460ff1681565b60085460ff1681565b60085460009060ff161561108d57600080fd5b610d22838361188c565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a031633146110d857600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a0316331461114957600080fd5b600854610100900460ff161561115e57600080fd5b6008805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff1615156111b257600080fd5b60055460a060020a900460ff1615156111ca57600080fd5b6111d261197d565b565b735f455243323233546f6b656e52656e646572657281565b600354600160a060020a031681565b604080517fe77cee3d000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363e77cee3d93879390929182916064909101906020860190808383600083811015610b52578181015183820152602001610b3a565b604080518082019091526006815260008051602061269f833981519152602082015281565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cf55780601f10610cca57610100808354040283529160200191610cf5565b600354600160a060020a0316331461131f57600080fd5b610f578160408051908101604052806006815260200160008051602061269f8339815191528152506119dc565b600e5460ff1681565b604080517fe9499555000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363e949955593879390929182916064909101906020860190808383600083811015610b52578181015183820152602001610b3a565b60055460009060a060020a900460ff1615156113fd57600080fd5b610d228383611aae565b60055460009060a060020a900460ff16151561142257600080fd5b610ed8848484611acb565b60085460009060ff161561144057600080fd5b610d228383611ae9565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a0316331461148c57600080fd5b60055460a060020a900460ff16156114a357600080fd5b86516114b69060069060208a0190612606565b5085516114ca906007906020890190612606565b50600a805460ff1990811660ff97909716969096179055600b93909355600c8054851692151592909217909155600e80549093169015151761ff001916610100911515919091021790555050565b600354600160a060020a0316331461152f57600080fd5b610f5781611b82565b60055460009060a060020a900460ff16151561155357600080fd5b61155f85858585611c00565b95945050505050565b7fd0c381c90000000000000000000000000000000000000000000000000000000081565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b60085460009060ff16156115c357600080fd5b610d228383611c1f565b6115d78282611604565b1515610d9357600080fd5b600354600090600160a060020a031633146115fc57600080fd5b610ddc611c85565b600160a060020a03166000908152602091909152604090205460ff1690565b60085460009060ff161561163657600080fd5b610ed8848484611cae565b6116ab826009836040518082805190602001908083835b602083106116775780518252601f199092019160209182019101611658565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611e23565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b838110156117145781810151838201526020016116fc565b50505050905090810190601f1680156117415780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b8181018281101561175f57fe5b92915050565b60006117943360408051908101604052806006815260200160008051602061269f833981519152815250610d29565b600854610100900460ff16156117a957600080fd5b6001546117bc908363ffffffff61175216565b600155600160a060020a0383166000908152602081905260409020546117e8908363ffffffff61175216565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b610f573382611e45565b336000908152600260209081526040808320600160a060020a03861684529091528120548083106118e057336000908152600260209081526040808320600160a060020a0388168452909152812055611915565b6118f0818463ffffffff611f4616565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b600354600160a060020a0316331461199457600080fd5b60085460ff16156119a457600080fd5b6008805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b611a46826009836040518082805190602001908083835b60208310611a125780518252601f1990920191602091820191016119f3565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611f58565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982604051808060200182810382528381815181526020019150805190602001908083836000838110156117145781810151838201526020016116fc565b60085460009060ff1615611ac157600080fd5b610d228383611f7d565b60085460009060ff1615611ade57600080fd5b610ed8848484611f9a565b336000908152600260209081526040808320600160a060020a0386168452909152812054611b1d908363ffffffff61175216565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a0381161515611b9757600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009060ff1615611c1357600080fd5b61155f85858585611fc7565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6005805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a038316600090815260208190526040812054821115611cd357600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115611d0357600080fd5b600160a060020a0383161515611d1857600080fd5b600160a060020a038416600090815260208190526040902054611d41908363ffffffff611f4616565b600160a060020a038086166000908152602081905260408082209390935590851681522054611d76908363ffffffff61175216565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054611db8908363ffffffff611f4616565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038216600090815260208190526040902054811115611e6a57600080fd5b600160a060020a038216600090815260208190526040902054611e93908263ffffffff611f4616565b600160a060020a038316600090815260208190526040902055600154611ebf908263ffffffff611f4616565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600082821115611f5257fe5b50900390565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b60085460009060ff1615611f9057600080fd5b610d2283836122a5565b6000611fa5846122d4565b15611fbc57611fb58484846122dc565b9050610d22565b611fb58484846124df565b6000611fd2856122d4565b156122935783611fe1336110a6565b11611feb57600080fd5b61200484611ff8336110a6565b9063ffffffff611f4616565b3360009081526020819052604090205561202d84612021876110a6565b9063ffffffff61175216565b60008087600160a060020a0316600160a060020a031681526020019081526020016000208190555084600160a060020a03166000836040516020018082805190602001908083835b602083106120945780518252601f199092019160209182019101612075565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106120f75780518252601f1990920191602091820191016120d8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060e060020a9004903387876040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015612189578181015183820152602001612171565b50505050905090810190601f1680156121b65780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af1935050505015156121d657fe5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612250578181015183820152602001612238565b50505050905090810190601f16801561227d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001610ed8565b61229e8585856124df565b9050610ed8565b600060606122b2846122d4565b156122c9576122c28484836122dc565b9150611976565b6122c28484836124df565b6000903b1190565b600080836122e9336110a6565b116122f357600080fd5b61230084611ff8336110a6565b3360009081526020819052604090205561231d84612021876110a6565b600160a060020a0386166000818152602081815260408083209490945592517fc0ee0b8a0000000000000000000000000000000000000000000000000000000081523360048201818152602483018a90526060604484019081528951606485015289518c9850959663c0ee0b8a9693958c958c956084909101928601918190849084905b838110156123b95781810151838201526020016123a1565b50505050905090810190601f1680156123e65780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561240757600080fd5b505af115801561241b573d6000803e3d6000fd5b5050505084600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612499578181015183820152602001612481565b50505050905090810190601f1680156124c65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001949350505050565b6000826124eb336110a6565b116124f557600080fd5b61250283611ff8336110a6565b3360009081526020819052604090205561251f83612021866110a6565b60008086600160a060020a0316600160a060020a031681526020019081526020016000208190555083600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c15781810151838201526020016125a9565b50505050905090810190601f1680156125ee5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061264757805160ff1916838001178555612674565b82800160010185558215612674579182015b82811115612674578251825591602001919060010190612659565b50612680929150612684565b5090565b610ddf91905b80821115612680576000815560010161268a56006d696e7465720000000000000000000000000000000000000000000000000000a165627a7a723058200ba424ca4b49ff8a7ae101432c9815a4e15d0e470de6462556b1b021535dfcdd0029",
  "deployedBytecode": "0x6080604052600436106102215763ffffffff60e060020a60003504166301bd3411811461022657806301ffc9a7146102f457806305d2035b1461033f57806306fdde0314610354578063095ea7b3146103695780630988ca8c1461038d5780630f15f4c0146103f6578063172d02bd1461040b57806318160ddd14610452578063186601ca1461047957806319fa8f501461048e5780632154dc39146104a3578063217fe6c6146104b857806323b872dd1461051f57806325d387b5146105495780633092afd514610561578063313ce5671461058257806336775847146105ad578063378dc3dc146105c25780633f4ba83a146105d757806340c10f19146105ec57806342966c68146106105780634bf365df146106285780635c975abb1461063d57806366188463146106525780636f2ddd931461067657806370a08231146106a7578063715018a6146106c85780637d64bcb4146106dd5780638456cb59146106f25780638ada6b0f146107075780638da5cb5b1461071c578063908ba6481461073157806392afc33a1461078a57806395d89b411461079f578063983b2d56146107b4578063a07c7ce4146107d5578063a3a8fd2c146107ea578063a9059cbb14610843578063be45fd6214610867578063d73dd623146108d0578063dd62ed3e146108f4578063f2226de61461091b578063f2fde38b146109d2578063f6368f8a146109f3578063fb499abc14610a9a578063fbf964eb14610aaf575b600080fd5b34801561023257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f943694929360249392840191908190840183828082843750949750610ac49650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b95781810151838201526020016102a1565b50505050905090810190601f1680156102e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030057600080fd5b5061032b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610c2d565b604080519115158252519081900360200190f35b34801561034b57600080fd5b5061032b610c61565b34801561036057600080fd5b5061027f610c6f565b34801561037557600080fd5b5061032b600160a060020a0360043516602435610cfd565b34801561039957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103f4958335600160a060020a0316953695604494919390910191908190840183828082843750949750610d299650505050505050565b005b34801561040257600080fd5b5061032b610d97565b34801561041757600080fd5b50610420610de2565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561045e57600080fd5b50610467610e06565b60408051918252519081900360200190f35b34801561048557600080fd5b5061032b610e0c565b34801561049a57600080fd5b50610420610e1c565b3480156104af57600080fd5b50610467610e40565b3480156104c457600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261032b958335600160a060020a0316953695604494919390910191908190840183828082843750949750610e469650505050505050565b34801561052b57600080fd5b5061032b600160a060020a0360043581169060243516604435610eb2565b34801561055557600080fd5b506103f4600435610ee0565b34801561056d57600080fd5b506103f4600160a060020a0360043516610f13565b34801561058e57600080fd5b50610597610f5a565b6040805160ff9092168252519081900360200190f35b3480156105b957600080fd5b5061032b610f63565b3480156105ce57600080fd5b50610467610f71565b3480156105e357600080fd5b506103f4610f77565b3480156105f857600080fd5b5061032b600160a060020a0360043516602435610fd4565b34801561061c57600080fd5b506103f4600435611036565b34801561063457600080fd5b5061032b611068565b34801561064957600080fd5b5061032b611071565b34801561065e57600080fd5b5061032b600160a060020a036004351660243561107a565b34801561068257600080fd5b5061068b611097565b60408051600160a060020a039092168252519081900360200190f35b3480156106b357600080fd5b50610467600160a060020a03600435166110a6565b3480156106d457600080fd5b506103f46110c1565b3480156106e957600080fd5b5061032b61112f565b3480156106fe57600080fd5b506103f461119c565b34801561071357600080fd5b5061068b6111d4565b34801561072857600080fd5b5061068b6111ec565b34801561073d57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f9436949293602493928401919081908401838280828437509497506111fb9650505050505050565b34801561079657600080fd5b5061027f611288565b3480156107ab57600080fd5b5061027f6112ad565b3480156107c057600080fd5b506103f4600160a060020a0360043516611308565b3480156107e157600080fd5b5061032b61134c565b3480156107f657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f9436949293602493928401919081908401838280828437509497506113559650505050505050565b34801561084f57600080fd5b5061032b600160a060020a03600435166024356113e2565b34801561087357600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261032b948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506114079650505050505050565b3480156108dc57600080fd5b5061032b600160a060020a036004351660243561142d565b34801561090057600080fd5b50610467600160a060020a036004358116906024351661144a565b34801561092757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103f494369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff85351695505050602083013592604081013515159250606081013515159150608001351515611475565b3480156109de57600080fd5b506103f4600160a060020a0360043516611518565b3480156109ff57600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261032b948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506115389650505050505050565b348015610aa657600080fd5b50610420611568565b348015610abb57600080fd5b5061042061158c565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363bf3bed549387939092918291606490910190602086019080838360005b83811015610b52578181015183820152602001610b3a565b50505050905090810190601f168015610b7f5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610b9f57600080fd5b505af1158015610bb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bdc57600080fd5b810190808051640100000000811115610bf457600080fd5b82016020810184811115610c0757600080fd5b8151640100000000811182820187101715610c2157600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b600854610100900460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cf55780601f10610cca57610100808354040283529160200191610cf5565b820191906000526020600020905b815481529060010190602001808311610cd857829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610d1857600080fd5b610d2283836115b0565b9392505050565b610d93826009836040518082805190602001908083835b60208310610d5f5780518252601f199092019160209182019101610d40565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506115cd565b5050565b60055460009060a060020a900460ff1615610db157600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610ddc6115e2565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600d5481565b6000610d22836009846040518082805190602001908083835b60208310610e7e5780518252601f199092019160209182019101610e5f565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611604565b60055460009060a060020a900460ff161515610ecd57600080fd5b610ed8848484611623565b949350505050565b600354600160a060020a03163314610ef757600080fd5b60055460a060020a900460ff1615610f0e57600080fd5b600d55565b600354600160a060020a03163314610f2a57600080fd5b610f578160408051908101604052806006815260200160008051602061269f833981519152815250611641565b50565b600a5460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610f8e57600080fd5b60085460ff161515610f9f57600080fd5b6008805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600c5460009060ff161515610fe857600080fd5b60055460a060020a900460ff16151561100057600080fd5b6000600d54111561102c57600d54600154611021908463ffffffff61175216565b111561102c57600080fd5b610d228383611765565b600e5460ff16151561104757600080fd5b60055460a060020a900460ff16151561105f57600080fd5b610f5781611882565b600c5460ff1681565b60085460ff1681565b60085460009060ff161561108d57600080fd5b610d22838361188c565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a031633146110d857600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a0316331461114957600080fd5b600854610100900460ff161561115e57600080fd5b6008805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff1615156111b257600080fd5b60055460a060020a900460ff1615156111ca57600080fd5b6111d261197d565b565b735f455243323233546f6b656e52656e646572657281565b600354600160a060020a031681565b604080517fe77cee3d000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363e77cee3d93879390929182916064909101906020860190808383600083811015610b52578181015183820152602001610b3a565b604080518082019091526006815260008051602061269f833981519152602082015281565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cf55780601f10610cca57610100808354040283529160200191610cf5565b600354600160a060020a0316331461131f57600080fd5b610f578160408051908101604052806006815260200160008051602061269f8339815191528152506119dc565b600e5460ff1681565b604080517fe9499555000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363e949955593879390929182916064909101906020860190808383600083811015610b52578181015183820152602001610b3a565b60055460009060a060020a900460ff1615156113fd57600080fd5b610d228383611aae565b60055460009060a060020a900460ff16151561142257600080fd5b610ed8848484611acb565b60085460009060ff161561144057600080fd5b610d228383611ae9565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a0316331461148c57600080fd5b60055460a060020a900460ff16156114a357600080fd5b86516114b69060069060208a0190612606565b5085516114ca906007906020890190612606565b50600a805460ff1990811660ff97909716969096179055600b93909355600c8054851692151592909217909155600e80549093169015151761ff001916610100911515919091021790555050565b600354600160a060020a0316331461152f57600080fd5b610f5781611b82565b60055460009060a060020a900460ff16151561155357600080fd5b61155f85858585611c00565b95945050505050565b7fd0c381c90000000000000000000000000000000000000000000000000000000081565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b60085460009060ff16156115c357600080fd5b610d228383611c1f565b6115d78282611604565b1515610d9357600080fd5b600354600090600160a060020a031633146115fc57600080fd5b610ddc611c85565b600160a060020a03166000908152602091909152604090205460ff1690565b60085460009060ff161561163657600080fd5b610ed8848484611cae565b6116ab826009836040518082805190602001908083835b602083106116775780518252601f199092019160209182019101611658565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611e23565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b838110156117145781810151838201526020016116fc565b50505050905090810190601f1680156117415780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b8181018281101561175f57fe5b92915050565b60006117943360408051908101604052806006815260200160008051602061269f833981519152815250610d29565b600854610100900460ff16156117a957600080fd5b6001546117bc908363ffffffff61175216565b600155600160a060020a0383166000908152602081905260409020546117e8908363ffffffff61175216565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b610f573382611e45565b336000908152600260209081526040808320600160a060020a03861684529091528120548083106118e057336000908152600260209081526040808320600160a060020a0388168452909152812055611915565b6118f0818463ffffffff611f4616565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b600354600160a060020a0316331461199457600080fd5b60085460ff16156119a457600080fd5b6008805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b611a46826009836040518082805190602001908083835b60208310611a125780518252601f1990920191602091820191016119f3565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611f58565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982604051808060200182810382528381815181526020019150805190602001908083836000838110156117145781810151838201526020016116fc565b60085460009060ff1615611ac157600080fd5b610d228383611f7d565b60085460009060ff1615611ade57600080fd5b610ed8848484611f9a565b336000908152600260209081526040808320600160a060020a0386168452909152812054611b1d908363ffffffff61175216565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a0381161515611b9757600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009060ff1615611c1357600080fd5b61155f85858585611fc7565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6005805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a038316600090815260208190526040812054821115611cd357600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115611d0357600080fd5b600160a060020a0383161515611d1857600080fd5b600160a060020a038416600090815260208190526040902054611d41908363ffffffff611f4616565b600160a060020a038086166000908152602081905260408082209390935590851681522054611d76908363ffffffff61175216565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054611db8908363ffffffff611f4616565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038216600090815260208190526040902054811115611e6a57600080fd5b600160a060020a038216600090815260208190526040902054611e93908263ffffffff611f4616565b600160a060020a038316600090815260208190526040902055600154611ebf908263ffffffff611f4616565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600082821115611f5257fe5b50900390565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b60085460009060ff1615611f9057600080fd5b610d2283836122a5565b6000611fa5846122d4565b15611fbc57611fb58484846122dc565b9050610d22565b611fb58484846124df565b6000611fd2856122d4565b156122935783611fe1336110a6565b11611feb57600080fd5b61200484611ff8336110a6565b9063ffffffff611f4616565b3360009081526020819052604090205561202d84612021876110a6565b9063ffffffff61175216565b60008087600160a060020a0316600160a060020a031681526020019081526020016000208190555084600160a060020a03166000836040516020018082805190602001908083835b602083106120945780518252601f199092019160209182019101612075565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106120f75780518252601f1990920191602091820191016120d8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060e060020a9004903387876040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015612189578181015183820152602001612171565b50505050905090810190601f1680156121b65780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af1935050505015156121d657fe5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612250578181015183820152602001612238565b50505050905090810190601f16801561227d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001610ed8565b61229e8585856124df565b9050610ed8565b600060606122b2846122d4565b156122c9576122c28484836122dc565b9150611976565b6122c28484836124df565b6000903b1190565b600080836122e9336110a6565b116122f357600080fd5b61230084611ff8336110a6565b3360009081526020819052604090205561231d84612021876110a6565b600160a060020a0386166000818152602081815260408083209490945592517fc0ee0b8a0000000000000000000000000000000000000000000000000000000081523360048201818152602483018a90526060604484019081528951606485015289518c9850959663c0ee0b8a9693958c958c956084909101928601918190849084905b838110156123b95781810151838201526020016123a1565b50505050905090810190601f1680156123e65780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561240757600080fd5b505af115801561241b573d6000803e3d6000fd5b5050505084600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612499578181015183820152602001612481565b50505050905090810190601f1680156124c65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001949350505050565b6000826124eb336110a6565b116124f557600080fd5b61250283611ff8336110a6565b3360009081526020819052604090205561251f83612021866110a6565b60008086600160a060020a0316600160a060020a031681526020019081526020016000208190555083600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c15781810151838201526020016125a9565b50505050905090810190601f1680156125ee5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061264757805160ff1916838001178555612674565b82800160010185558215612674579182015b82811115612674578251825591602001919060010190612659565b50612680929150612684565b5090565b610ddf91905b80821115612680576000815560010161268a56006d696e7465720000000000000000000000000000000000000000000000000000a165627a7a723058200ba424ca4b49ff8a7ae101432c9815a4e15d0e470de6462556b1b021535dfcdd0029",
  "sourceMap": "160:736:8:-;;;247:26:41;;;-1:-1:-1;;436:35:48;;;1524:26:7;;;-1:-1:-1;;1524:26:7;1548:2;1524:26;;;339:138:8;5:2:-1;;;;30:1;27;20:12;5:2;339:138:8;;;;;;;;;;;;;;;;;;;;;;;;;;567:5:43;:18;;-1:-1:-1;;;;;;567:18:43;575:10;567:18;;;339:138:8;;;;;;;;;;;;;;649:38:40;668:18;649;;;;:38;:::i;:::-;-1:-1:-1;;;;;568:20:22;;;;560:29;;;;;;600:8;:31;;620:10;-1:-1:-1;;;;;;600:31:22;;;;;;;641:5;:14;;;;;-1:-1:-1;;;;;641:14:22;;;;;666:40;685:20;666:18;;;;:40;:::i;:::-;-1:-1:-1;591:12:25;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;613:16:25;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;640:37:25;659:17;640:18;;;;:37;:::i;:::-;-1:-1:-1;2061:43:7;;-1:-1:-1;2080:23:7;;-1:-1:-1;2061:18:7;;;;:43;:::i;:::-;1926:186;;;339:138:8;;;160:736;;987:156:40;1065:26;;;;;;1057:35;;;;;;1098:33;;;;;;:19;:33;;;;;:40;;-1:-1:-1;;1098:40:40;1134:4;1098:40;;;987:156::o;160:736:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;160:736:8;;;-1:-1:-1;160:736:8;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "160:736:8:-;;;;;;;;;-1:-1:-1;;;160:736:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;769:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;769:125:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;769:125:8;;-1:-1:-1;769:125:8;;-1:-1:-1;;;;;;;769:125:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;769:125:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:142:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;775:142:40;-1:-1:-1;;775:142:40;;;;;;;;;;;;;;;;;;;;;;;436:35:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;436:35:48;;;;418:18:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;418:18:25;;;;3596:138:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3596:138:7;-1:-1:-1;;;;;3596:138:7;;;;;;;837:114:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;837:114:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;837:114:37;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;837:114:37;;-1:-1:-1;837:114:37;;-1:-1:-1;;;;;;;837:114:37;;;2695:177:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2695:177:7;;;;358:53:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;358:53:25;;;;;;;;-1:-1:-1;;358:53:25;;;;;;;;;;;;;;389:83:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;389:83:44;;;;;;;;;;;;;;;;;;;;53:21:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;53:21:21;;;;230:54:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:54:40;;;;1616:26:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1616:26:7;;;;1091:136:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1091:136:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:136:37;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1091:136:37;;-1:-1:-1;1091:136:37;;-1:-1:-1;;;;;;;1091:136:37;3396:194:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3396:194:7;-1:-1:-1;;;;;3396:194:7;;;;;;;;;;;;2569:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2569:120:7;;;;;830:99:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;830:99:50;-1:-1:-1;;;;;830:99:50;;;;;1524:26:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1524:26:7;;;;;;;;;;;;;;;;;;;;;;;1674:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1674:20:7;;;;1556:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1556:28:7;;;;838:92:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;838:92:41;;;;3740:245:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3740:245:7;-1:-1:-1;;;;;3740:245:7;;;;;;;3991:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3991:99:7;;;;;1590:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:20:7;;;;247:26:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;247:26:41;;;;957:205:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;957:205:49;-1:-1:-1;;;;;957:205:49;;;;;;;484:24:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;484:24:22;;;;;;;;-1:-1:-1;;;;;484:24:22;;;;;;;;;;;;;;1149:99:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1149:99:44;-1:-1:-1;;;;;1149:99:44;;;;;1001:111:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1001:111:43;;;;1280:140:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1280:140:48;;;;4096:81:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4096:81:7;;;;224:108:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;224:108:8;;;;238:20:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:43;;;;627:136:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;627:136:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;627:136:8;;-1:-1:-1;627:136:8;;-1:-1:-1;;;;;;;627:136:8;346:45:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;346:45:50;;;;442:20:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;442:20:25;;;;646:93:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;646:93:50;-1:-1:-1;;;;;646:93:50;;;;;1648:20:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1648:20:7;;;;483:138:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;483:138:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;483:138:8;;-1:-1:-1;483:138:8;;-1:-1:-1;;;;;;;483:138:8;3251:139:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3251:139:7;-1:-1:-1;;;;;3251:139:7;;;;;;;3086:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3086:159:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3086:159:7;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3086:159:7;;-1:-1:-1;3086:159:7;;-1:-1:-1;;;;;;;3086:159:7;758:195:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;758:195:49;-1:-1:-1;;;;;758:195:49;;;;;;;2321:153:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2321:153:51;-1:-1:-1;;;;;2321:153:51;;;;;;;;;;2118:445:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2118:445:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2118:445:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2118:445:7;;;;-1:-1:-1;2118:445:7;-1:-1:-1;2118:445:7;;-1:-1:-1;2118:445:7;;;;;;;;-1:-1:-1;2118:445:7;;-1:-1:-1;;2118:445:7;;;;;-1:-1:-1;;;2118:445:7;;;;;;;;;;;;-1:-1:-1;2118:445:7;;;;;;;-1:-1:-1;2118:445:7;;;;;;;1274:103:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1274:103:43;-1:-1:-1;;;;;1274:103:43;;;;;2878:202:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2878:202:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:202:7;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2878:202:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2878:202:7;;;;-1:-1:-1;2878:202:7;-1:-1:-1;2878:202:7;;-1:-1:-1;2878:202:7;;;;;;;;-1:-1:-1;2878:202:7;;-1:-1:-1;2878:202:7;;-1:-1:-1;;;;;;;2878:202:7;1458:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1458:59:7;;;;421:56:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;421:56:22;;;;769:125:8;857:30;;;;;;882:4;857:30;;;;;;;;;;;;;;;;;;;;822:16;;291:40;;857:15;;873:7;;882:4;;857:30;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;857:30:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;857:30:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;857:30:8;;;;;;39:16:-1;36:1;17:17;2:54;101:4;857:30:8;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;857:30:8;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;-1:-1;857:30:8;;769:125;-1:-1:-1;;;;;;769:125:8:o;775:142:40:-;-1:-1:-1;;879:33:40;858:4;879:33;;;:19;:33;;;;;;;;;775:142::o;436:35:48:-;;;;;;;;;:::o;418:18:25:-;;;;;;;;;;;;;;;-1:-1:-1;;418:18:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3596:138:7:-;122:9:21;;3675:4:7;;-1:-1:-1;;;122:9:21;;;;114:18;;;;;;;;3698:29:7;3712:7;3721:5;3698:13;:29::i;:::-;3691:36;3596:138;-1:-1:-1;;;3596:138:7:o;837:114:37:-;917:29;936:9;917:5;923;917:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;917:12:37;;;;;-1:-1:-1;917:12:37;;;;;;;;;;;;-1:-1:-1;;917:18:37;:29::i;:::-;837:114;;:::o;2695:177:7:-;201:9:21;;2748:4:7;;-1:-1:-1;;;201:9:21;;;;200:10;192:19;;;;;;2779:13:7;;2764:12;:28;;;2811:5;;-1:-1:-1;;;;;2811:5:7;-1:-1:-1;2802:15:7;;;;;;;;;;:30;2849:16;:14;:16::i;:::-;2842:23;;221:1:21;2695:177:7;:::o;358:53:25:-;;;:::o;389:83:44:-;455:12;;389:83;:::o;53:21:21:-;;;-1:-1:-1;;;53:21:21;;;;;:::o;230:54:40:-;;;:::o;1616:26:7:-;;;;:::o;1091:136:37:-;1174:4;1195:27;1212:9;1195:5;1201;1195:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1195:12:37;;;;;-1:-1:-1;1195:12:37;;;;;;;;;;;;-1:-1:-1;;1195:16:37;:27::i;3396:194:7:-;122:9:21;;3522:4:7;;-1:-1:-1;;;122:9:21;;;;114:18;;;;;;;;3545:38:7;3564:5;3571:3;3576:6;3545:18;:38::i;:::-;3538:45;3396:194;-1:-1:-1;;;;3396:194:7:o;2569:120::-;719:5:43;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;201:9:21;;-1:-1:-1;;;201:9:21;;;;200:10;192:19;;;;;;2656:11:7;:26;2569:120::o;830:99:50:-;719:5:43;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;892:32:50;903:7;912:11;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;912:11:50;;;892:10;:32::i;:::-;830:99;:::o;1524:26:7:-;;;;;;:::o;1674:20::-;;;;;;;;;:::o;1556:28::-;;;;:::o;838:92:41:-;719:5:43;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;568:6:41;;;;560:15;;;;;;;;891:6;:14;;-1:-1:-1;;891:14:41;;;916:9;;;;900:5;;916:9;838:92::o;3740:245:7:-;1818:8;;3827:4;;1818:8;;1810:17;;;;;;;;122:9:21;;-1:-1:-1;;;122:9:21;;;;114:18;;;;;;;;3861:1:7;3847:11;;:15;3843:95;;;3915:11;;3886:12;;:25;;3903:7;3886:25;:16;:25;:::i;:::-;:40;;3878:49;;;;;;3954:24;3965:3;3970:7;3954:10;:24::i;3991:99::-;1743:8;;;;1735:17;;;;;;;;122:9:21;;-1:-1:-1;;;122:9:21;;;;114:18;;;;;;;;4065::7;4076:6;4065:10;:18::i;1590:20::-;;;;;;:::o;247:26:41:-;;;;;;:::o;957:205:49:-;416:6:41;;1078:12:49;;416:6:41;;415:7;407:16;;;;;;1107:50:49;1130:8;1140:16;1107:22;:50::i;484:24:22:-;;;-1:-1:-1;;;;;484:24:22;;:::o;1149:99:44:-;-1:-1:-1;;;;;1227:16:44;1205:7;1227:16;;;;;;;;;;;;1149:99::o;1001:111:43:-;719:5;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;1077:5;;1058:25;;-1:-1:-1;;;;;1077:5:43;;;;1058:25;;1077:5;;1058:25;1089:5;:18;;-1:-1:-1;;1089:18:43;;;1001:111::o;1280:140:48:-;719:5:43;;1339:4:48;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;511:15:48;;;;;;;510:16;502:25;;;;;;1351:15;:22;;-1:-1:-1;;1351:22:48;;;;;1384:14;;;;1351:22;;1384:14;-1:-1:-1;1411:4:48;1280:140;:::o;4096:81:7:-;1893:8;;;;;;;1885:17;;;;;;;;122:9:21;;-1:-1:-1;;;122:9:21;;;;114:18;;;;;;;;4157:13:7;:11;:13::i;:::-;4096:81::o;224:108:8:-;291:40;224:108;:::o;238:20:43:-;;;-1:-1:-1;;;;;238:20:43;;:::o;627:136:8:-;721:35;;;;;;751:4;721:35;;;;;;;;;;;;;;;;;;;;685:17;;291:40;;721:20;;742:7;;751:4;;721:35;;;;;;;;;;;;;;;-1:-1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;346:45:50;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;346:45:50;;;;;:::o;442:20:25:-;;;;;;;;;;;;;;;-1:-1:-1;;442:20:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;646:93:50;719:5:43;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;705:29:50;713:7;722:11;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;722:11:50;;;705:7;:29::i;1648:20:7:-;;;;;;:::o;483:138:8:-;578:36;;;;;;609:4;578:36;;;;;;;;;;;;;;;;;;;;542:17;;291:40;;578:21;;600:7;;609:4;;578:36;;;;;;;;;;;;;;;-1:-1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3251:139:7;122:9:21;;3325:12:7;;-1:-1:-1;;;122:9:21;;;;114:18;;;;;;;;3356:27:7;3371:3;3376:6;3356:14;:27::i;3086:159::-;122:9:21;;3173:12:7;;-1:-1:-1;;;122:9:21;;;;114:18;;;;;;;;3204:34:7;3219:3;3224:6;3232:5;3204:14;:34::i;758:195:49:-;416:6:41;;874:12:49;;416:6:41;;415:7;407:16;;;;;;903:45:49;926:8;936:11;903:22;:45::i;2321:153:51:-;-1:-1:-1;;;;;2444:15:51;;;2420:7;2444:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2321:153::o;2118:445:7:-;719:5:43;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;201:9:21;;-1:-1:-1;;;201:9:21;;;;200:10;192:19;;;;;;2358:12:7;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2380:16:7;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;2406:8:7;:20;;-1:-1:-1;;2406:20:7;;;;;;;;;;;;;;2436:13;:30;;;;2476:8;:20;;;;;;;;;;;;;;2506:8;:20;;;;;;;;;-1:-1:-1;;2536:20:7;2406;2536;;;;;;;;;;-1:-1:-1;;2118:445:7:o;1274:103:43:-;719:5;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;1343:29;1362:9;1343:18;:29::i;2878:202:7:-;122:9:21;;2990:12:7;;-1:-1:-1;;;122:9:21;;;;114:18;;;;;;;;3021:52:7;3036:3;3041:6;3049:5;3056:16;3021:14;:52::i;:::-;3014:59;2878:202;-1:-1:-1;;;;;2878:202:7:o;1458:59::-;;;:::o;421:56:22:-;;;:::o;592:162:49:-;416:6:41;;697:4:49;;416:6:41;;415:7;407:16;;;;;;718:31:49;732:8;742:6;718:13;:31::i;666:111:38:-;754:17;758:5;765;754:3;:17::i;:::-;746:26;;;;;;;690:92:25;719:5:43;;736:4:25;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;759:16:25;:14;:16::i;855:128:38:-;-1:-1:-1;;;;;959:19:38;938:4;959:19;;;;;;;;;;;;;;;855:128::o;400:188:49:-;416:6:41;;524:4:49;;416:6:41;;415:7;407:16;;;;;;545:38:49;564:5;571:3;576:6;545:18;:38::i;1613:149:37:-;1687:30;1707:9;1687:5;1693;1687:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1687:12:37;;;;;-1:-1:-1;1687:12:37;;;;;;;;;;;;-1:-1:-1;;1687:19:37;:30::i;:::-;1740:9;-1:-1:-1;;;;;1728:29:37;;1751:5;1728:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1728:29:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:149;;:::o;1238:128:42:-;1319:7;;;1339;;;;1332:15;;;;1238:128;;;;:::o;854:312:48:-;968:4;514:34:50;524:10;536:11;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;536:11:50;;;514:9;:34::i;:::-;511:15:48;;;;;;;510:16;502:25;;;;;;997:12;;:25;;1014:7;997:25;:16;:25;:::i;:::-;982:12;:40;-1:-1:-1;;;;;1044:13:48;;:8;:13;;;;;;;;;;;:26;;1062:7;1044:26;:17;:26;:::i;:::-;-1:-1:-1;;;;;1028:13:48;;:8;:13;;;;;;;;;;;;:42;;;;1081:18;;;;;;;1028:13;;1081:18;;;;;;;;;1110:34;;;;;;;;-1:-1:-1;;;;;1110:34:48;;;1127:1;;1110:34;;;;;;;;;-1:-1:-1;1157:4:48;854:312;;;;:::o;353:73:45:-;396:25;402:10;414:6;396:5;:25::i;3679:432:51:-;3826:10;3785:4;3818:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3818:29:51;;;;;;;;;;3857:28;;;3853:165;;3903:10;3927:1;3895:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3895:29:51;;;;;;;;;:33;3853:165;;;3981:30;:8;3994:16;3981:30;:12;:30;:::i;:::-;3957:10;3949:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3949:29:51;;;;;;;;;:62;3853:165;4037:10;4059:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;4028:61:51;;4059:29;;;;;;;;;;;4028:61;;;;;;;;;4037:10;4028:61;;;;;;;;;;;4102:4;4095:11;;3679:432;;;;;;:::o;666:90:41:-;719:5:43;;-1:-1:-1;;;;;719:5:43;705:10;:19;697:28;;;;;;416:6:41;;;;415:7;407:16;;;;;;720:6;:13;;-1:-1:-1;;720:13:41;729:4;720:13;;;744:7;;;;720:6;;744:7;666:90::o;1347:141:37:-;1418:27;1435:9;1418:5;1424;1418:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1418:12:37;;;;;-1:-1:-1;1418:12:37;;;;;;;;;;;;-1:-1:-1;;1418:16:37;:27::i;:::-;1466:9;-1:-1:-1;;;;;1456:27:37;;1477:5;1456:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;578:139:4;416:6:41;;652:12:4;;416:6:41;;415:7;407:16;;;;;;683:27:4;698:3;703:6;683:14;:27::i;413:159::-;416:6:41;;500:12:4;;416:6:41;;415:7;407:16;;;;;;531:34:4;546:3;551:6;559:5;531:14;:34::i;2926:296:51:-;3089:10;3027:4;3081:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3081:29:51;;;;;;;;;;:46;;3115:11;3081:46;:33;:46;:::i;:::-;3049:10;3041:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3041:29:51;;;;;;;;;;;;:87;;;3139:61;;;;;;3041:29;;3139:61;;;;;;;;;;;-1:-1:-1;3213:4:51;2926:296;;;;:::o;1512:171:43:-;-1:-1:-1;;;;;1582:23:43;;;;1574:32;;;;;;1638:5;;1617:38;;-1:-1:-1;;;;;1617:38:43;;;;1638:5;;1617:38;;1638:5;;1617:38;1661:5;:17;;-1:-1:-1;;1661:17:43;-1:-1:-1;;;;;1661:17:43;;;;;;;;;;1512:171::o;205:202:4:-;416:6:41;;317:12:4;;416:6:41;;415:7;407:16;;;;;;348:52:4;363:3;368:6;376:5;383:16;348:14;:52::i;1814:188:51:-;1901:10;1881:4;1893:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1893:29:51;;;;;;;;;;;:38;;;1942;;;;;;;1881:4;;1893:29;;1901:10;;1942:38;;;;;;;;-1:-1:-1;1993:4:51;1814:188;;;;:::o;235:96:21:-;287:9;:16;;-1:-1:-1;;287:16:21;-1:-1:-1;;;287:16:21;;;299:4;235:96;:::o;726:470:51:-;-1:-1:-1;;;;;864:15:51;;832:4;864:15;;;;;;;;;;;854:25;;;846:34;;;;;;-1:-1:-1;;;;;904:14:51;;;;;;:7;:14;;;;;;;;919:10;904:26;;;;;;;;894:36;;;886:45;;;;;;-1:-1:-1;;;;;945:17:51;;;;937:26;;;;;;-1:-1:-1;;;;;988:15:51;;:8;:15;;;;;;;;;;;:27;;1008:6;988:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;970:15:51;;;:8;:15;;;;;;;;;;;:45;;;;1037:13;;;;;;;:25;;1055:6;1037:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;1021:13:51;;;:8;:13;;;;;;;;;;;:41;;;;1097:14;;;;;:7;:14;;;;;1112:10;1097:26;;;;;;;:38;;1128:6;1097:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;1068:14:51;;;;;;;:7;:14;;;;;;;;1083:10;1068:26;;;;;;;;:67;;;;1146:28;;;;;;;;;;;1068:14;;1146:28;;;;;;;;;;;-1:-1:-1;1187:4:51;726:470;;;;;:::o;486:104:38:-;-1:-1:-1;;;;;558:19:38;580:5;558:19;;;;;;;;;;;:27;;-1:-1:-1;;558:27:38;;;486:104::o;430:438:45:-;-1:-1:-1;;;;;508:14:45;;:8;:14;;;;;;;;;;;498:24;;;490:33;;;;;;-1:-1:-1;;;;;718:14:45;;:8;:14;;;;;;;;;;;:26;;737:6;718:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;701:14:45;;:8;:14;;;;;;;;;;:43;765:12;;:24;;782:6;765:24;:16;:24;:::i;:::-;750:12;:39;800:18;;;;;;;;-1:-1:-1;;;;;800:18:45;;;;;;;;;;;;;829:34;;;;;;;;852:1;;-1:-1:-1;;;;;829:34:45;;;;;;;;;;;;430:438;;:::o;1060:116:42:-;1120:7;1142:8;;;;1135:16;;;;-1:-1:-1;1164:7:42;;;1060:116::o;321:100:38:-;-1:-1:-1;;;;;390:19:38;:12;:19;;;;;;;;;;;:26;;-1:-1:-1;;390:26:38;412:4;390:26;;;321:100::o;242:154:49:-;416:6:41;;343:4:49;;416:6:41;;415:7;407:16;;;;;;364:27:49;379:3;384:6;364:14;:27::i;1064:278:6:-;1137:12;1166:15;1177:3;1166:10;:15::i;:::-;1162:174;;;1204:38;1223:3;1228:6;1236:5;1204:18;:38::i;:::-;1197:45;;;;1162:174;1288:37;1306:3;1311:6;1319:5;1288:17;:37::i;338:630::-;436:12;465:15;476:3;465:10;:15::i;:::-;461:501;;;528:6;504:21;514:10;504:9;:21::i;:::-;:30;496:39;;;;;;572:33;598:6;572:21;582:10;572:9;:21::i;:::-;:25;:33;:25;:33;:::i;:::-;558:10;549:8;:20;;;;;;;;;;:56;635:26;654:6;635:14;645:3;635:9;:14::i;:::-;:18;:26;:18;:26;:::i;:::-;619:8;:13;628:3;-1:-1:-1;;;;;619:13:6;-1:-1:-1;;;;;619:13:6;;;;;;;;;;;;:42;;;;682:3;-1:-1:-1;;;;;682:8:6;697:1;734:16;717:34;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;717:34:6;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;717:34:6;;;707:45;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;707:45:6;;;;;;;;;;;;;;;;-1:-1:-1;;;682:99:6;;;755:10;767:6;775:5;682:99;;;;;-1:-1:-1;;;682:99:6;;;;;;;-1:-1:-1;;;;;682:99:6;-1:-1:-1;;;;;682:99:6;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;682:99:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;675:107;;;;;;823:3;-1:-1:-1;;;;;802:40:6;811:10;-1:-1:-1;;;;;802:40:6;;828:6;836:5;802:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;802:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;864:4:6;857:11;;461:501;914:37;932:3;937:6;945:5;914:17;:37::i;:::-;907:44;;;;1479:426;1539:12;1696:18;1729:15;1740:3;1729:10;:15::i;:::-;1725:174;;;1767:38;1786:3;1791:6;1799:5;1767:18;:38::i;:::-;1760:45;;;;1725:174;1851:37;1869:3;1874:6;1882:5;1851:17;:37::i;2004:284::-;2061:16;2224:18;;2270:10;;2004:284::o;2788:484::-;2872:12;3065:32;2929:6;2905:21;2915:10;2905:9;:21::i;:::-;:30;2897:39;;;;;;2969:33;2995:6;2969:21;2979:10;2969:9;:21::i;:33::-;2955:10;2946:8;:20;;;;;;;;;;:56;3028:26;3047:6;3028:14;3038:3;3028:9;:14::i;:26::-;-1:-1:-1;;;;;3012:13:6;;:8;:13;;;;;;;;;;;:42;;;;3138:49;;;;;3161:10;3138:49;;;;;;;;;;;;;;;;;;;;;;;;;;;3021:3;;-1:-1:-1;3012:13:6;;3138:22;;3161:10;;3173:6;;3181:5;;3138:49;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3138:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3138:49:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3138:49:6;;;;3224:3;-1:-1:-1;;;;;3203:40:6;3212:10;-1:-1:-1;;;;;3203:40:6;;3229:6;3237:5;3203:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3203:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3261:4:6;;2788:484;-1:-1:-1;;;;2788:484:6:o;2363:350::-;2446:12;2503:6;2479:21;2489:10;2479:9;:21::i;:::-;:30;2471:39;;;;;;2543:33;2569:6;2543:21;2553:10;2543:9;:21::i;:33::-;2529:10;2520:8;:20;;;;;;;;;;:56;2602:26;2621:6;2602:14;2612:3;2602:9;:14::i;:26::-;2586:8;:13;2595:3;-1:-1:-1;;;;;2586:13:6;-1:-1:-1;;;;;2586:13:6;;;;;;;;;;;;:42;;;;2665:3;-1:-1:-1;;;;;2644:40:6;2653:10;-1:-1:-1;;;;;2644:40:6;;2670:6;2678:5;2644:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2644:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2702:4:6;2363:350;;;;;:::o;160:736:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;160:736:8;;;-1:-1:-1;160:736:8;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./ERC223Token.sol\";\nimport \"./widget/ERC223TokenRenderer.sol\";\nimport \"tokenboost-solidity/contracts/widget/Renderable.sol\";\n\ncontract RenderableERC223Token is ERC223Token, Renderable {\n    ERC223TokenRenderer constant public renderer = ERC223TokenRenderer(address(bytes20(\"_ERC223TokenRenderer\")));\n\n    constructor(\n        address _owner,\n        string _name,\n        string _symbol\n    ) public ERC223Token(_owner, _name, _symbol) {\n    }\n\n    function adminWidgets(string _locale) public view returns (string jsonObject) {\n        return renderer.adminWidgets(_locale, this);\n    }\n\n    function userWidgets(string _locale) public view returns (string jsonObject) {\n        return renderer.userWidgets(_locale, this);\n    }\n\n    function inputs(string _locale) public view returns (string jsonArray) {\n        return renderer.inputs(_locale, this);\n    }\n}\n",
  "sourcePath": "/Users/dowonlee/Desktop/dowon/DNext/tokenboost/tokenboost-solidity-erc223token/contracts/token/erc223/RenderableERC223Token.sol",
  "ast": {
    "absolutePath": "/Users/dowonlee/Desktop/dowon/DNext/tokenboost/tokenboost-solidity-erc223token/contracts/token/erc223/RenderableERC223Token.sol",
    "exportedSymbols": {
      "RenderableERC223Token": [
        1112
      ]
    },
    "id": 1113,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1038,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:8"
      },
      {
        "absolutePath": "/Users/dowonlee/Desktop/dowon/DNext/tokenboost/tokenboost-solidity-erc223token/contracts/token/erc223/ERC223Token.sol",
        "file": "./ERC223Token.sol",
        "id": 1039,
        "nodeType": "ImportDirective",
        "scope": 1113,
        "sourceUnit": 1037,
        "src": "26:27:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/dowonlee/Desktop/dowon/DNext/tokenboost/tokenboost-solidity-erc223token/contracts/token/erc223/widget/ERC223TokenRenderer.sol",
        "file": "./widget/ERC223TokenRenderer.sol",
        "id": 1040,
        "nodeType": "ImportDirective",
        "scope": 1113,
        "sourceUnit": 1934,
        "src": "54:42:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "file": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "id": 1041,
        "nodeType": "ImportDirective",
        "scope": 1113,
        "sourceUnit": 5906,
        "src": "97:61:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1042,
              "name": "ERC223Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1036,
              "src": "194:11:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC223Token_$1036",
                "typeString": "contract ERC223Token"
              }
            },
            "id": 1043,
            "nodeType": "InheritanceSpecifier",
            "src": "194:11:8"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1044,
              "name": "Renderable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5905,
              "src": "207:10:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Renderable_$5905",
                "typeString": "contract Renderable"
              }
            },
            "id": 1045,
            "nodeType": "InheritanceSpecifier",
            "src": "207:10:8"
          }
        ],
        "contractDependencies": [
          321,
          393,
          711,
          1036,
          3168,
          3212,
          3520,
          5905,
          6531,
          6611,
          6662,
          6722,
          6902,
          6998,
          7069,
          7112,
          7144,
          7250,
          7352,
          7400,
          7647
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1112,
        "linearizedBaseContracts": [
          1112,
          5905,
          1036,
          7400,
          6531,
          7250,
          7069,
          393,
          7352,
          6722,
          3520,
          3168,
          3212,
          6662,
          6611,
          6902,
          711,
          7647,
          6998,
          7112,
          7144,
          321
        ],
        "name": "RenderableERC223Token",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 1054,
            "name": "renderer",
            "nodeType": "VariableDeclaration",
            "scope": 1112,
            "src": "224:108:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
              "typeString": "contract ERC223TokenRenderer"
            },
            "typeName": {
              "contractScope": null,
              "id": 1046,
              "name": "ERC223TokenRenderer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1933,
              "src": "224:19:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                "typeString": "contract ERC223TokenRenderer"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "5f455243323233546f6b656e52656e6465726572",
                          "id": 1050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "307:22:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_ad176924583ccf846d64bed0c47eb82e772990a670dfbfc4970a61ca6d48d4a4",
                            "typeString": "literal_string \"_ERC223TokenRenderer\""
                          },
                          "value": "_ERC223TokenRenderer"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_ad176924583ccf846d64bed0c47eb82e772990a670dfbfc4970a61ca6d48d4a4",
                            "typeString": "literal_string \"_ERC223TokenRenderer\""
                          }
                        ],
                        "id": 1049,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "299:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes20_$",
                          "typeString": "type(bytes20)"
                        },
                        "typeName": "bytes20"
                      },
                      "id": 1051,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "299:31:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    ],
                    "id": 1048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "291:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": "address"
                  },
                  "id": 1052,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "291:40:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 1047,
                "name": "ERC223TokenRenderer",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 1933,
                "src": "271:19:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_ERC223TokenRenderer_$1933_$",
                  "typeString": "type(contract ERC223TokenRenderer)"
                }
              },
              "id": 1053,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "271:61:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                "typeString": "contract ERC223TokenRenderer"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 1068,
              "nodeType": "Block",
              "src": "470:7:8",
              "statements": []
            },
            "documentation": null,
            "id": 1069,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1063,
                    "name": "_owner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1056,
                    "src": "446:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 1064,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1058,
                    "src": "454:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 1065,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1060,
                    "src": "461:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 1066,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1062,
                  "name": "ERC223Token",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1036,
                  "src": "434:11:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC223Token_$1036_$",
                    "typeString": "type(contract ERC223Token)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "434:35:8"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1056,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1069,
                  "src": "360:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1055,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "360:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1058,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1069,
                  "src": "384:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1057,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "384:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1060,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 1069,
                  "src": "406:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1059,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "406:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "350:76:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1067,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "470:0:8"
            },
            "scope": 1112,
            "src": "339:138:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1082,
              "nodeType": "Block",
              "src": "561:60:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1078,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1071,
                        "src": "600:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1079,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7757,
                        "src": "609:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1076,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1054,
                        "src": "578:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                          "typeString": "contract ERC223TokenRenderer"
                        }
                      },
                      "id": 1077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "adminWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1793,
                      "src": "578:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC223Token_$1036_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC223Token) view external returns (string memory)"
                      }
                    },
                    "id": 1080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "578:36:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 1075,
                  "id": 1081,
                  "nodeType": "Return",
                  "src": "571:43:8"
                }
              ]
            },
            "documentation": null,
            "id": 1083,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "adminWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1071,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 1083,
                  "src": "505:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1070,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "505:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "504:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1074,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 1083,
                  "src": "542:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1073,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "542:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "541:19:8"
            },
            "scope": 1112,
            "src": "483:138:8",
            "stateMutability": "view",
            "superFunction": 5890,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1096,
              "nodeType": "Block",
              "src": "704:59:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1092,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1085,
                        "src": "742:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1093,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7757,
                        "src": "751:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1090,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1054,
                        "src": "721:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                          "typeString": "contract ERC223TokenRenderer"
                        }
                      },
                      "id": 1091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1809,
                      "src": "721:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC223Token_$1036_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC223Token) view external returns (string memory)"
                      }
                    },
                    "id": 1094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "721:35:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 1089,
                  "id": 1095,
                  "nodeType": "Return",
                  "src": "714:42:8"
                }
              ]
            },
            "documentation": null,
            "id": 1097,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "userWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1085,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 1097,
                  "src": "648:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1084,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "648:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "647:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1089,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1088,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 1097,
                  "src": "685:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1087,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "685:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "684:19:8"
            },
            "scope": 1112,
            "src": "627:136:8",
            "stateMutability": "view",
            "superFunction": 5897,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1110,
              "nodeType": "Block",
              "src": "840:54:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1106,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1099,
                        "src": "873:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1107,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7757,
                        "src": "882:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1104,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1054,
                        "src": "857:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                          "typeString": "contract ERC223TokenRenderer"
                        }
                      },
                      "id": 1105,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "inputs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1932,
                      "src": "857:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC223Token_$1036_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC223Token) view external returns (string memory)"
                      }
                    },
                    "id": 1108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "857:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 1103,
                  "id": 1109,
                  "nodeType": "Return",
                  "src": "850:37:8"
                }
              ]
            },
            "documentation": null,
            "id": 1111,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "inputs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1100,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1099,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 1111,
                  "src": "785:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1098,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "785:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "784:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1102,
                  "name": "jsonArray",
                  "nodeType": "VariableDeclaration",
                  "scope": 1111,
                  "src": "822:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1101,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "822:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "821:18:8"
            },
            "scope": 1112,
            "src": "769:125:8",
            "stateMutability": "view",
            "superFunction": 5904,
            "visibility": "public"
          }
        ],
        "scope": 1113,
        "src": "160:736:8"
      }
    ],
    "src": "0:897:8"
  },
  "legacyAST": {
    "absolutePath": "/Users/dowonlee/Desktop/dowon/DNext/tokenboost/tokenboost-solidity-erc223token/contracts/token/erc223/RenderableERC223Token.sol",
    "exportedSymbols": {
      "RenderableERC223Token": [
        1112
      ]
    },
    "id": 1113,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1038,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:8"
      },
      {
        "absolutePath": "/Users/dowonlee/Desktop/dowon/DNext/tokenboost/tokenboost-solidity-erc223token/contracts/token/erc223/ERC223Token.sol",
        "file": "./ERC223Token.sol",
        "id": 1039,
        "nodeType": "ImportDirective",
        "scope": 1113,
        "sourceUnit": 1037,
        "src": "26:27:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/dowonlee/Desktop/dowon/DNext/tokenboost/tokenboost-solidity-erc223token/contracts/token/erc223/widget/ERC223TokenRenderer.sol",
        "file": "./widget/ERC223TokenRenderer.sol",
        "id": 1040,
        "nodeType": "ImportDirective",
        "scope": 1113,
        "sourceUnit": 1934,
        "src": "54:42:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "file": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "id": 1041,
        "nodeType": "ImportDirective",
        "scope": 1113,
        "sourceUnit": 5906,
        "src": "97:61:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1042,
              "name": "ERC223Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1036,
              "src": "194:11:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC223Token_$1036",
                "typeString": "contract ERC223Token"
              }
            },
            "id": 1043,
            "nodeType": "InheritanceSpecifier",
            "src": "194:11:8"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1044,
              "name": "Renderable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5905,
              "src": "207:10:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Renderable_$5905",
                "typeString": "contract Renderable"
              }
            },
            "id": 1045,
            "nodeType": "InheritanceSpecifier",
            "src": "207:10:8"
          }
        ],
        "contractDependencies": [
          321,
          393,
          711,
          1036,
          3168,
          3212,
          3520,
          5905,
          6531,
          6611,
          6662,
          6722,
          6902,
          6998,
          7069,
          7112,
          7144,
          7250,
          7352,
          7400,
          7647
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1112,
        "linearizedBaseContracts": [
          1112,
          5905,
          1036,
          7400,
          6531,
          7250,
          7069,
          393,
          7352,
          6722,
          3520,
          3168,
          3212,
          6662,
          6611,
          6902,
          711,
          7647,
          6998,
          7112,
          7144,
          321
        ],
        "name": "RenderableERC223Token",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 1054,
            "name": "renderer",
            "nodeType": "VariableDeclaration",
            "scope": 1112,
            "src": "224:108:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
              "typeString": "contract ERC223TokenRenderer"
            },
            "typeName": {
              "contractScope": null,
              "id": 1046,
              "name": "ERC223TokenRenderer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1933,
              "src": "224:19:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                "typeString": "contract ERC223TokenRenderer"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "5f455243323233546f6b656e52656e6465726572",
                          "id": 1050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "307:22:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_ad176924583ccf846d64bed0c47eb82e772990a670dfbfc4970a61ca6d48d4a4",
                            "typeString": "literal_string \"_ERC223TokenRenderer\""
                          },
                          "value": "_ERC223TokenRenderer"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_ad176924583ccf846d64bed0c47eb82e772990a670dfbfc4970a61ca6d48d4a4",
                            "typeString": "literal_string \"_ERC223TokenRenderer\""
                          }
                        ],
                        "id": 1049,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "299:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes20_$",
                          "typeString": "type(bytes20)"
                        },
                        "typeName": "bytes20"
                      },
                      "id": 1051,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "299:31:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    ],
                    "id": 1048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "291:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": "address"
                  },
                  "id": 1052,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "291:40:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 1047,
                "name": "ERC223TokenRenderer",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 1933,
                "src": "271:19:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_ERC223TokenRenderer_$1933_$",
                  "typeString": "type(contract ERC223TokenRenderer)"
                }
              },
              "id": 1053,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "271:61:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                "typeString": "contract ERC223TokenRenderer"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 1068,
              "nodeType": "Block",
              "src": "470:7:8",
              "statements": []
            },
            "documentation": null,
            "id": 1069,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1063,
                    "name": "_owner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1056,
                    "src": "446:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 1064,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1058,
                    "src": "454:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 1065,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1060,
                    "src": "461:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 1066,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1062,
                  "name": "ERC223Token",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1036,
                  "src": "434:11:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC223Token_$1036_$",
                    "typeString": "type(contract ERC223Token)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "434:35:8"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1056,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1069,
                  "src": "360:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1055,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "360:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1058,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1069,
                  "src": "384:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1057,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "384:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1060,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 1069,
                  "src": "406:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1059,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "406:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "350:76:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1067,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "470:0:8"
            },
            "scope": 1112,
            "src": "339:138:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1082,
              "nodeType": "Block",
              "src": "561:60:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1078,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1071,
                        "src": "600:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1079,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7757,
                        "src": "609:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1076,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1054,
                        "src": "578:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                          "typeString": "contract ERC223TokenRenderer"
                        }
                      },
                      "id": 1077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "adminWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1793,
                      "src": "578:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC223Token_$1036_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC223Token) view external returns (string memory)"
                      }
                    },
                    "id": 1080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "578:36:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 1075,
                  "id": 1081,
                  "nodeType": "Return",
                  "src": "571:43:8"
                }
              ]
            },
            "documentation": null,
            "id": 1083,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "adminWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1071,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 1083,
                  "src": "505:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1070,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "505:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "504:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1074,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 1083,
                  "src": "542:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1073,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "542:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "541:19:8"
            },
            "scope": 1112,
            "src": "483:138:8",
            "stateMutability": "view",
            "superFunction": 5890,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1096,
              "nodeType": "Block",
              "src": "704:59:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1092,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1085,
                        "src": "742:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1093,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7757,
                        "src": "751:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1090,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1054,
                        "src": "721:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                          "typeString": "contract ERC223TokenRenderer"
                        }
                      },
                      "id": 1091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1809,
                      "src": "721:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC223Token_$1036_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC223Token) view external returns (string memory)"
                      }
                    },
                    "id": 1094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "721:35:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 1089,
                  "id": 1095,
                  "nodeType": "Return",
                  "src": "714:42:8"
                }
              ]
            },
            "documentation": null,
            "id": 1097,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "userWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1085,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 1097,
                  "src": "648:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1084,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "648:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "647:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1089,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1088,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 1097,
                  "src": "685:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1087,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "685:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "684:19:8"
            },
            "scope": 1112,
            "src": "627:136:8",
            "stateMutability": "view",
            "superFunction": 5897,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1110,
              "nodeType": "Block",
              "src": "840:54:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1106,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1099,
                        "src": "873:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1107,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7757,
                        "src": "882:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC223Token_$1112",
                          "typeString": "contract RenderableERC223Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1104,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1054,
                        "src": "857:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC223TokenRenderer_$1933",
                          "typeString": "contract ERC223TokenRenderer"
                        }
                      },
                      "id": 1105,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "inputs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1932,
                      "src": "857:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC223Token_$1036_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC223Token) view external returns (string memory)"
                      }
                    },
                    "id": 1108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "857:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 1103,
                  "id": 1109,
                  "nodeType": "Return",
                  "src": "850:37:8"
                }
              ]
            },
            "documentation": null,
            "id": 1111,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "inputs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1100,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1099,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 1111,
                  "src": "785:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1098,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "785:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "784:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1102,
                  "name": "jsonArray",
                  "nodeType": "VariableDeclaration",
                  "scope": 1111,
                  "src": "822:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1101,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "822:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "821:18:8"
            },
            "scope": 1112,
            "src": "769:125:8",
            "stateMutability": "view",
            "superFunction": 5904,
            "visibility": "public"
          }
        ],
        "scope": 1113,
        "src": "160:736:8"
      }
    ],
    "src": "0:897:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-24T12:40:22.224Z"
}