UNPKG

@tokamak-network/thanos-contracts

Version:
1 lines 446 kB
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50601680601d6000396000f3fe6080604052600080fdfea164736f6c634300080f000a","sourceMap":"652:595:144:-:0;;;829:17;;;;;;;;;;652:595;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600080fdfea164736f6c634300080f000a","sourceMap":"652:595:144:-:0;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L1/L2NativeToken.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/L1/L2NativeToken.sol\":{\"keccak256\":\"0x2b590fcd928d3490d29df584242a28990f8ebbbe375b37f7fe430a7b72924f0e\",\"urls\":[\"bzz-raw://9937058f528d8bdcbdee8e0fcc23f6b7a05aca4703937779bd57cc033961caac\",\"dweb:/ipfs/Qmf74TwEkHpA8D6onjwiRfNpnL8wVeLKJfssa7yJ1fUJQa\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L1/L2NativeToken.sol":"Context"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/L1/L2NativeToken.sol":{"keccak256":"0x2b590fcd928d3490d29df584242a28990f8ebbbe375b37f7fe430a7b72924f0e","urls":["bzz-raw://9937058f528d8bdcbdee8e0fcc23f6b7a05aca4703937779bd57cc033961caac","dweb:/ipfs/Qmf74TwEkHpA8D6onjwiRfNpnL8wVeLKJfssa7yJ1fUJQa"],"license":null}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev"},"ast":{"absolutePath":"src/L1/L2NativeToken.sol","id":91279,"exportedSymbols":{"AuthController":[91042],"Context":[89354],"ERC165":[90844],"ERC165Checker":[90619],"ERC20":[90173],"ERC20Detailed":[90451],"ERC20Mintable":[90391],"ERC20OnApprove":[90963],"IERC165":[90791],"IERC20":[89557],"L2NativeToken":[91278],"MinterRole":[90365],"MinterRoleRenounceTarget":[90967],"OnApprove":[90872],"Ownable":[89481],"OwnableTarget":[90980],"PauserRoleRenounceTarget":[90971],"Roles":[90260],"SafeMath":[89751],"SeigManagerI":[90781],"SeigToken":[91237]},"nodeType":"SourceUnit","src":"127:37495:144","nodes":[{"id":89326,"nodeType":"PragmaDirective","src":"127:23:144","nodes":[],"literals":["solidity","0.8",".15"]},{"id":89354,"nodeType":"ContractDefinition","src":"652:595:144","nodes":[{"id":89330,"nodeType":"FunctionDefinition","src":"829:17:144","nodes":[],"body":{"id":89329,"nodeType":"Block","src":"843:3:144","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":89327,"nodeType":"ParameterList","parameters":[],"src":"840:2:144"},"returnParameters":{"id":89328,"nodeType":"ParameterList","parameters":[],"src":"843:0:144"},"scope":89354,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89342,"nodeType":"FunctionDefinition","src":"905:97:144","nodes":[],"body":{"id":89341,"nodeType":"Block","src":"959:43:144","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":89337,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"984:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":89338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"984:10:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":89336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"976:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89335,"name":"address","nodeType":"ElementaryTypeName","src":"976:7:144","typeDescriptions":{}}},"id":89339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"976:19:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":89334,"id":89340,"nodeType":"Return","src":"969:26:144"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"914:10:144","parameters":{"id":89331,"nodeType":"ParameterList","parameters":[],"src":"924:2:144"},"returnParameters":{"id":89334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89342,"src":"950:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89332,"name":"address","nodeType":"ElementaryTypeName","src":"950:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"949:9:144"},"scope":89354,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":89353,"nodeType":"FunctionDefinition","src":"1008:237:144","nodes":[],"body":{"id":89352,"nodeType":"Block","src":"1065:180:144","nodes":[],"statements":[{"expression":{"id":89347,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1075:4:144","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$89354","typeString":"contract Context"}},"id":89348,"nodeType":"ExpressionStatement","src":"1075:4:144"},{"expression":{"expression":{"id":89349,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1230:3:144","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":89350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"1230:8:144","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":89346,"id":89351,"nodeType":"Return","src":"1223:15:144"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"1017:8:144","parameters":{"id":89343,"nodeType":"ParameterList","parameters":[],"src":"1025:2:144"},"returnParameters":{"id":89346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89353,"src":"1051:12:144","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":89344,"name":"bytes","nodeType":"ElementaryTypeName","src":"1051:5:144","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1050:14:144"},"scope":89354,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[89354],"name":"Context","nameLocation":"661:7:144","scope":91279,"usedErrors":[]},{"id":89481,"nodeType":"ContractDefinition","src":"1674:1980:144","nodes":[{"id":89359,"nodeType":"VariableDeclaration","src":"1708:22:144","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"1724:6:144","scope":89481,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89358,"name":"address","nodeType":"ElementaryTypeName","src":"1708:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":89365,"nodeType":"EventDefinition","src":"1737:84:144","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"1743:20:144","parameters":{"id":89364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89361,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1780:13:144","nodeType":"VariableDeclaration","scope":89365,"src":"1764:29:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89360,"name":"address","nodeType":"ElementaryTypeName","src":"1764:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89363,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1811:8:144","nodeType":"VariableDeclaration","scope":89365,"src":"1795:24:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89362,"name":"address","nodeType":"ElementaryTypeName","src":"1795:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1763:57:144"}},{"id":89387,"nodeType":"FunctionDefinition","src":"1923:149:144","nodes":[],"body":{"id":89386,"nodeType":"Block","src":"1937:135:144","nodes":[],"statements":[{"assignments":[89370],"declarations":[{"constant":false,"id":89370,"mutability":"mutable","name":"msgSender","nameLocation":"1955:9:144","nodeType":"VariableDeclaration","scope":89386,"src":"1947:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89369,"name":"address","nodeType":"ElementaryTypeName","src":"1947:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":89373,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":89371,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"1967:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1967:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1947:32:144"},{"expression":{"id":89376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":89374,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"1989:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":89375,"name":"msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89370,"src":"1998:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1989:18:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":89377,"nodeType":"ExpressionStatement","src":"1989:18:144"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":89381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2051:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2043:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89379,"name":"address","nodeType":"ElementaryTypeName","src":"2043:7:144","typeDescriptions":{}}},"id":89382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2043:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89383,"name":"msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89370,"src":"2055:9:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":89378,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89365,"src":"2022:20:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":89384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2022:43:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89385,"nodeType":"EmitStatement","src":"2017:48:144"}]},"documentation":{"id":89366,"nodeType":"StructuredDocumentation","src":"1827:91:144","text":" @dev Initializes the contract setting the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":89367,"nodeType":"ParameterList","parameters":[],"src":"1934:2:144"},"returnParameters":{"id":89368,"nodeType":"ParameterList","parameters":[],"src":"1937:0:144"},"scope":89481,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89396,"nodeType":"FunctionDefinition","src":"2148:77:144","nodes":[],"body":{"id":89395,"nodeType":"Block","src":"2195:30:144","nodes":[],"statements":[{"expression":{"id":89393,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"2212:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":89392,"id":89394,"nodeType":"Return","src":"2205:13:144"}]},"documentation":{"id":89388,"nodeType":"StructuredDocumentation","src":"2078:65:144","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2157:5:144","parameters":{"id":89389,"nodeType":"ParameterList","parameters":[],"src":"2162:2:144"},"returnParameters":{"id":89392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89396,"src":"2186:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89390,"name":"address","nodeType":"ElementaryTypeName","src":"2186:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2185:9:144"},"scope":89481,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":89407,"nodeType":"ModifierDefinition","src":"2313:103:144","nodes":[],"body":{"id":89406,"nodeType":"Block","src":"2334:82:144","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":89400,"name":"isOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89419,"src":"2352:7:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":89401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2352:9:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":89402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2363:34:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":89399,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2344:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2344:54:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89404,"nodeType":"ExpressionStatement","src":"2344:54:144"},{"id":89405,"nodeType":"PlaceholderStatement","src":"2408:1:144"}]},"documentation":{"id":89397,"nodeType":"StructuredDocumentation","src":"2231:77:144","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"2322:9:144","parameters":{"id":89398,"nodeType":"ParameterList","parameters":[],"src":"2331:2:144"},"virtual":false,"visibility":"internal"},{"id":89419,"nodeType":"FunctionDefinition","src":"2499:92:144","nodes":[],"body":{"id":89418,"nodeType":"Block","src":"2545:46:144","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":89416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":89413,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89342,"src":"2562:10:144","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":89414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2562:12:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":89415,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"2578:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2562:22:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":89412,"id":89417,"nodeType":"Return","src":"2555:29:144"}]},"documentation":{"id":89408,"nodeType":"StructuredDocumentation","src":"2422:72:144","text":" @dev Returns true if the caller is the current owner."},"functionSelector":"8f32d59b","implemented":true,"kind":"function","modifiers":[],"name":"isOwner","nameLocation":"2508:7:144","parameters":{"id":89409,"nodeType":"ParameterList","parameters":[],"src":"2515:2:144"},"returnParameters":{"id":89412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89419,"src":"2539:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89410,"name":"bool","nodeType":"ElementaryTypeName","src":"2539:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2538:6:144"},"scope":89481,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":89441,"nodeType":"FunctionDefinition","src":"2933:137:144","nodes":[],"body":{"id":89440,"nodeType":"Block","src":"2979:91:144","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":89426,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"3015:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":89429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3031:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3023:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89427,"name":"address","nodeType":"ElementaryTypeName","src":"3023:7:144","typeDescriptions":{}}},"id":89430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3023:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":89425,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89365,"src":"2994:20:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":89431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2994:40:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89432,"nodeType":"EmitStatement","src":"2989:45:144"},{"expression":{"id":89438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":89433,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"3044:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":89436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3061:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3053:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89434,"name":"address","nodeType":"ElementaryTypeName","src":"3053:7:144","typeDescriptions":{}}},"id":89437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3053:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3044:19:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":89439,"nodeType":"ExpressionStatement","src":"3044:19:144"}]},"documentation":{"id":89420,"nodeType":"StructuredDocumentation","src":"2597:331:144","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":89423,"kind":"modifierInvocation","modifierName":{"id":89422,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"2969:9:144"},"nodeType":"ModifierInvocation","src":"2969:9:144"}],"name":"renounceOwnership","nameLocation":"2942:17:144","parameters":{"id":89421,"nodeType":"ParameterList","parameters":[],"src":"2959:2:144"},"returnParameters":{"id":89424,"nodeType":"ParameterList","parameters":[],"src":"2979:0:144"},"scope":89481,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89454,"nodeType":"FunctionDefinition","src":"3219:107:144","nodes":[],"body":{"id":89453,"nodeType":"Block","src":"3281:45:144","nodes":[],"statements":[{"expression":{"arguments":[{"id":89450,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89444,"src":"3310:8:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":89449,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89480,"src":"3291:18:144","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":89451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3291:28:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89452,"nodeType":"ExpressionStatement","src":"3291:28:144"}]},"documentation":{"id":89442,"nodeType":"StructuredDocumentation","src":"3076:138:144","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":89447,"kind":"modifierInvocation","modifierName":{"id":89446,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":89407,"src":"3271:9:144"},"nodeType":"ModifierInvocation","src":"3271:9:144"}],"name":"transferOwnership","nameLocation":"3228:17:144","parameters":{"id":89445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89444,"mutability":"mutable","name":"newOwner","nameLocation":"3254:8:144","nodeType":"VariableDeclaration","scope":89454,"src":"3246:16:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89443,"name":"address","nodeType":"ElementaryTypeName","src":"3246:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3245:18:144"},"returnParameters":{"id":89448,"nodeType":"ParameterList","parameters":[],"src":"3281:0:144"},"scope":89481,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":89480,"nodeType":"FunctionDefinition","src":"3427:225:144","nodes":[],"body":{"id":89479,"nodeType":"Block","src":"3482:170:144","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":89466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89461,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89457,"src":"3500:8:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":89464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3520:1:144","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":89463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3512:7:144","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":89462,"name":"address","nodeType":"ElementaryTypeName","src":"3512:7:144","typeDescriptions":{}}},"id":89465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3512:10:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3500:22:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":89467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3524:40:144","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":89460,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3492:7:144","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":89468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3492:73:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89469,"nodeType":"ExpressionStatement","src":"3492:73:144"},{"eventCall":{"arguments":[{"id":89471,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"3601:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":89472,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89457,"src":"3609:8:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":89470,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89365,"src":"3580:20:144","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":89473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3580:38:144","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89474,"nodeType":"EmitStatement","src":"3575:43:144"},{"expression":{"id":89477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":89475,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89359,"src":"3628:6:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":89476,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89457,"src":"3637:8:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3628:17:144","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":89478,"nodeType":"ExpressionStatement","src":"3628:17:144"}]},"documentation":{"id":89455,"nodeType":"StructuredDocumentation","src":"3332:90:144","text":" @dev Transfers ownership of the contract to a new account (`newOwner`)."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3436:18:144","parameters":{"id":89458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89457,"mutability":"mutable","name":"newOwner","nameLocation":"3463:8:144","nodeType":"VariableDeclaration","scope":89480,"src":"3455:16:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89456,"name":"address","nodeType":"ElementaryTypeName","src":"3455:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3454:18:144"},"returnParameters":{"id":89459,"nodeType":"ParameterList","parameters":[],"src":"3482:0:144"},"scope":89481,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":89356,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":89354,"src":"1694:7:144"},"id":89357,"nodeType":"InheritanceSpecifier","src":"1694:7:144"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":89355,"nodeType":"StructuredDocumentation","src":"1313:360:144","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[89481,89354],"name":"Ownable","nameLocation":"1683:7:144","scope":91279,"usedErrors":[]},{"id":89557,"nodeType":"ContractDefinition","src":"3872:2566:144","nodes":[{"id":89488,"nodeType":"FunctionDefinition","src":"3966:55:144","nodes":[],"documentation":{"id":89483,"nodeType":"StructuredDocumentation","src":"3895:66:144","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3975:11:144","parameters":{"id":89484,"nodeType":"ParameterList","parameters":[],"src":"3986:2:144"},"returnParameters":{"id":89487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89488,"src":"4012:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89485,"name":"uint256","nodeType":"ElementaryTypeName","src":"4012:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4011:9:144"},"scope":89557,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":89496,"nodeType":"FunctionDefinition","src":"4104:68:144","nodes":[],"documentation":{"id":89489,"nodeType":"StructuredDocumentation","src":"4027:72:144","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4113:9:144","parameters":{"id":89492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89491,"mutability":"mutable","name":"account","nameLocation":"4131:7:144","nodeType":"VariableDeclaration","scope":89496,"src":"4123:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89490,"name":"address","nodeType":"ElementaryTypeName","src":"4123:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4122:17:144"},"returnParameters":{"id":89495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89494,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89496,"src":"4163:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89493,"name":"uint256","nodeType":"ElementaryTypeName","src":"4163:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4162:9:144"},"scope":89557,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":89506,"nodeType":"FunctionDefinition","src":"4392:77:144","nodes":[],"documentation":{"id":89497,"nodeType":"StructuredDocumentation","src":"4178:209:144","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4401:8:144","parameters":{"id":89502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89499,"mutability":"mutable","name":"recipient","nameLocation":"4418:9:144","nodeType":"VariableDeclaration","scope":89506,"src":"4410:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89498,"name":"address","nodeType":"ElementaryTypeName","src":"4410:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89501,"mutability":"mutable","name":"amount","nameLocation":"4437:6:144","nodeType":"VariableDeclaration","scope":89506,"src":"4429:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89500,"name":"uint256","nodeType":"ElementaryTypeName","src":"4429:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4409:35:144"},"returnParameters":{"id":89505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89504,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89506,"src":"4463:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89503,"name":"bool","nodeType":"ElementaryTypeName","src":"4463:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4462:6:144"},"scope":89557,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":89516,"nodeType":"FunctionDefinition","src":"4744:83:144","nodes":[],"documentation":{"id":89507,"nodeType":"StructuredDocumentation","src":"4475:264:144","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4753:9:144","parameters":{"id":89512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89509,"mutability":"mutable","name":"owner","nameLocation":"4771:5:144","nodeType":"VariableDeclaration","scope":89516,"src":"4763:13:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89508,"name":"address","nodeType":"ElementaryTypeName","src":"4763:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89511,"mutability":"mutable","name":"spender","nameLocation":"4786:7:144","nodeType":"VariableDeclaration","scope":89516,"src":"4778:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89510,"name":"address","nodeType":"ElementaryTypeName","src":"4778:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4762:32:144"},"returnParameters":{"id":89515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89516,"src":"4818:7:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89513,"name":"uint256","nodeType":"ElementaryTypeName","src":"4818:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4817:9:144"},"scope":89557,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":89526,"nodeType":"FunctionDefinition","src":"5480:74:144","nodes":[],"documentation":{"id":89517,"nodeType":"StructuredDocumentation","src":"4833:642:144","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5489:7:144","parameters":{"id":89522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89519,"mutability":"mutable","name":"spender","nameLocation":"5505:7:144","nodeType":"VariableDeclaration","scope":89526,"src":"5497:15:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89518,"name":"address","nodeType":"ElementaryTypeName","src":"5497:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89521,"mutability":"mutable","name":"amount","nameLocation":"5522:6:144","nodeType":"VariableDeclaration","scope":89526,"src":"5514:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89520,"name":"uint256","nodeType":"ElementaryTypeName","src":"5514:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5496:33:144"},"returnParameters":{"id":89525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89524,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89526,"src":"5548:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89523,"name":"bool","nodeType":"ElementaryTypeName","src":"5548:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5547:6:144"},"scope":89557,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":89538,"nodeType":"FunctionDefinition","src":"5861:97:144","nodes":[],"documentation":{"id":89527,"nodeType":"StructuredDocumentation","src":"5560:296:144","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5870:12:144","parameters":{"id":89534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89529,"mutability":"mutable","name":"sender","nameLocation":"5891:6:144","nodeType":"VariableDeclaration","scope":89538,"src":"5883:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89528,"name":"address","nodeType":"ElementaryTypeName","src":"5883:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89531,"mutability":"mutable","name":"recipient","nameLocation":"5907:9:144","nodeType":"VariableDeclaration","scope":89538,"src":"5899:17:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89530,"name":"address","nodeType":"ElementaryTypeName","src":"5899:7:144","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":89533,"mutability":"mutable","name":"amount","nameLocation":"5926:6:144","nodeType":"VariableDeclaration","scope":89538,"src":"5918:14:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":89532,"name":"uint256","nodeType":"ElementaryTypeName","src":"5918:7:144","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5882:51:144"},"returnParameters":{"id":89537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89536,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89538,"src":"5952:4:144","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89535,"name":"bool","nodeType":"ElementaryTypeName","src":"5952:4:144","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5951:6:144"},"scope":89557,"stateMutability":"nonpayable","virtual":