ETH Price: $1,876.62 (+6.88%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Remove For1542300892026-07-14 19:55:551 hr ago1784058955IN
Farcaster: Key Registry
0 ETH0.0000001699770.00100037
Remove For1541856442026-07-13 19:14:2526 hrs ago1783970065IN
Farcaster: Key Registry
0 ETH0.0000001358270.00100046
Remove For1541856032026-07-13 19:13:0326 hrs ago1783969983IN
Farcaster: Key Registry
0 ETH0.0000001350710.00100046
Remove For1541759362026-07-13 13:50:4931 hrs ago1783950649IN
Farcaster: Key Registry
0 ETH0.0000001392670.00100036
Remove For1541739892026-07-13 12:45:5533 hrs ago1783946755IN
Farcaster: Key Registry
0 ETH0.0000001496420.00100034
Remove For1541739792026-07-13 12:45:3533 hrs ago1783946735IN
Farcaster: Key Registry
0 ETH0.0000001357450.00100034
Remove For1541739712026-07-13 12:45:1933 hrs ago1783946719IN
Farcaster: Key Registry
0 ETH0.0000001501130.00100034
Remove For1541487792026-07-12 22:45:3547 hrs ago1783896335IN
Farcaster: Key Registry
0 ETH0.0000001331790.00100036
Remove For1541487712026-07-12 22:45:1947 hrs ago1783896319IN
Farcaster: Key Registry
0 ETH0.000000181750.00100036
Remove For1540608322026-07-10 21:54:013 days ago1783720441IN
Farcaster: Key Registry
0 ETH0.0000001356080.00100035
Remove For1540608182026-07-10 21:53:333 days ago1783720413IN
Farcaster: Key Registry
0 ETH0.0000001358050.00100035
Remove For1540498572026-07-10 15:48:114 days ago1783698491IN
Farcaster: Key Registry
0 ETH0.0000001516310.00100038
Remove For1540382622026-07-10 9:21:414 days ago1783675301IN
Farcaster: Key Registry
0 ETH0.0000001505340.00100036
Remove For1540382572026-07-10 9:21:314 days ago1783675291IN
Farcaster: Key Registry
0 ETH0.0000001846890.00100036
Remove For1540382372026-07-10 9:20:514 days ago1783675251IN
Farcaster: Key Registry
0 ETH0.000000150550.00100037
Remove For1540382302026-07-10 9:20:374 days ago1783675237IN
Farcaster: Key Registry
0 ETH0.0000001505470.00100037
Remove For1540382152026-07-10 9:20:074 days ago1783675207IN
Farcaster: Key Registry
0 ETH0.0000001501860.00100037
Remove For1540382062026-07-10 9:19:494 days ago1783675189IN
Farcaster: Key Registry
0 ETH0.0000001503350.00100037
Remove For1540382012026-07-10 9:19:394 days ago1783675179IN
Farcaster: Key Registry
0 ETH0.0000001504220.00100037
Remove For1540381932026-07-10 9:19:234 days ago1783675163IN
Farcaster: Key Registry
0 ETH0.0000001505390.00100037
Remove For1540369702026-07-10 8:38:374 days ago1783672717IN
Farcaster: Key Registry
0 ETH0.0000001521840.00100038
Remove For1540292122026-07-10 4:20:014 days ago1783657201IN
Farcaster: Key Registry
0 ETH0.0000001337420.00100037
Remove For1540292072026-07-10 4:19:514 days ago1783657191IN
Farcaster: Key Registry
0 ETH0.0000001480060.00100037
Remove For1540269022026-07-10 3:03:014 days ago1783652581IN
Farcaster: Key Registry
0 ETH0.0000001335320.00100039
Remove For1540268952026-07-10 3:02:474 days ago1783652567IN
Farcaster: Key Registry
0 ETH0.0000001336850.00100039
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
1118163592023-11-06 0:44:55981 days ago1699231495  Contract Creation0 ETH

Cross-Chain Transactions
Loading...
Loading
Source Code Verified Exact Match

Contract Name

KeyRegistry

Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled
Yes with 100000 runs
Other Settings
paris EvmVersion
License
-NA-
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API
[{"inputs":[{"internalType":"address","name":"_idRegistry","type":"address"},{"internalType":"address","name":"_migrator","type":"address"},{"internalType":"address","name":"_initialOwner","type":"address"},{"internalType":"uint256","name":"_maxKeysPerFid","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyMigrated","type":"error"},{"inputs":[],"name":"ExceedsMaximum","type":"error"},{"inputs":[],"name":"GatewayFrozen","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[],"name":"InvalidKeyType","type":"error"},{"inputs":[],"name":"InvalidMaxKeys","type":"error"},{"inputs":[],"name":"InvalidMetadata","type":"error"},{"inputs":[],"name":"InvalidMetadataType","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidState","type":"error"},{"inputs":[],"name":"OnlyGuardian","type":"error"},{"inputs":[],"name":"OnlyMigrator","type":"error"},{"inputs":[],"name":"PermissionRevoked","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[{"internalType":"uint32","name":"keyType","type":"uint32"},{"internalType":"uint8","name":"metadataType","type":"uint8"}],"name":"ValidatorNotFound","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fid","type":"uint256"},{"indexed":true,"internalType":"uint32","name":"keyType","type":"uint32"},{"indexed":true,"internalType":"bytes","name":"key","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"keyBytes","type":"bytes"},{"indexed":false,"internalType":"uint8","name":"metadataType","type":"uint8"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"Add","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"guardian","type":"address"}],"name":"Add","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fid","type":"uint256"},{"indexed":true,"internalType":"bytes","name":"key","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"keyBytes","type":"bytes"}],"name":"AdminReset","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"keyGateway","type":"address"}],"name":"FreezeKeyGateway","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"migratedAt","type":"uint256"}],"name":"Migrated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fid","type":"uint256"},{"indexed":true,"internalType":"bytes","name":"key","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"keyBytes","type":"bytes"}],"name":"Remove","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"guardian","type":"address"}],"name":"Remove","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldIdRegistry","type":"address"},{"indexed":false,"internalType":"address","name":"newIdRegistry","type":"address"}],"name":"SetIdRegistry","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldKeyGateway","type":"address"},{"indexed":false,"internalType":"address","name":"newKeyGateway","type":"address"}],"name":"SetKeyGateway","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"SetMaxKeysPerFid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldMigrator","type":"address"},{"indexed":false,"internalType":"address","name":"newMigrator","type":"address"}],"name":"SetMigrator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"keyType","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"metadataType","type":"uint8"},{"indexed":false,"internalType":"address","name":"oldValidator","type":"address"},{"indexed":false,"internalType":"address","name":"newValidator","type":"address"}],"name":"SetValidator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"REMOVE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fidOwner","type":"address"},{"internalType":"uint32","name":"keyType","type":"uint32"},{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"uint8","name":"metadataType","type":"uint8"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"guardian","type":"address"}],"name":"addGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"fid","type":"uint256"},{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"internalType":"struct IKeyRegistry.BulkAddKey[]","name":"keys","type":"tuple[]"}],"internalType":"struct IKeyRegistry.BulkAddData[]","name":"items","type":"tuple[]"}],"name":"bulkAddKeysForMigration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"fid","type":"uint256"},{"internalType":"bytes[]","name":"keys","type":"bytes[]"}],"internalType":"struct IKeyRegistry.BulkResetData[]","name":"items","type":"tuple[]"}],"name":"bulkResetKeysForMigration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"domainSeparatorV4","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeKeyGateway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gatewayFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gracePeriod","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"guardian","type":"address"}],"name":"guardians","outputs":[{"internalType":"bool","name":"isGuardian","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"structHash","type":"bytes32"}],"name":"hashTypedDataV4","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"idRegistry","outputs":[{"internalType":"contract IdRegistryLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMigrated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fid","type":"uint256"},{"internalType":"enum IKeyRegistry.KeyState","name":"state","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"keyAt","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fid","type":"uint256"},{"internalType":"bytes","name":"key","type":"bytes"}],"name":"keyDataOf","outputs":[{"components":[{"internalType":"enum IKeyRegistry.KeyState","name":"state","type":"uint8"},{"internalType":"uint32","name":"keyType","type":"uint32"}],"internalType":"struct IKeyRegistry.KeyData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"keyGateway","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fid","type":"uint256"},{"internalType":"bytes","name":"key","type":"bytes"}],"name":"keys","outputs":[{"internalType":"enum IKeyRegistry.KeyState","name":"state","type":"uint8"},{"internalType":"uint32","name":"keyType","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fid","type":"uint256"},{"internalType":"enum IKeyRegistry.KeyState","name":"state","type":"uint8"}],"name":"keysOf","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fid","type":"uint256"},{"internalType":"enum IKeyRegistry.KeyState","name":"state","type":"uint8"},{"internalType":"uint256","name":"startIdx","type":"uint256"},{"internalType":"uint256","name":"batchSize","type":"uint256"}],"name":"keysOf","outputs":[{"internalType":"bytes[]","name":"page","type":"bytes[]"},{"internalType":"uint256","name":"nextIdx","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxKeysPerFid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migratedAt","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"key","type":"bytes"}],"name":"remove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fidOwner","type":"address"},{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"removeFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"guardian","type":"address"}],"name":"removeGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_idRegistry","type":"address"}],"name":"setIdRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_keyGateway","type":"address"}],"name":"setKeyGateway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxKeysPerFid","type":"uint256"}],"name":"setMaxKeysPerFid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_migrator","type":"address"}],"name":"setMigrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"keyType","type":"uint32"},{"internalType":"uint8","name":"metadataType","type":"uint8"},{"internalType":"contract IMetadataValidator","name":"validator","type":"address"}],"name":"setValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fid","type":"uint256"},{"internalType":"enum IKeyRegistry.KeyState","name":"state","type":"uint8"}],"name":"totalKeys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"useNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"keyType","type":"uint32"},{"internalType":"uint8","name":"metadataType","type":"uint8"}],"name":"validators","outputs":[{"internalType":"contract IMetadataValidator","name":"validator","type":"address"}],"stateMutability":"view","type":"function"}]
6101806040523480156200001257600080fd5b506040516200435b3803806200435b833981016040819052620000359162000457565b6040518060400160405280601581526020017f466172636173746572204b657952656769737472790000000000000000000000815250604051806040016040528060018152602001603160f81b815250818162015180878780620000a8620000a26200028d60201b60201c565b62000291565b6001805460ff60a01b19169055620000c08162000291565b5062ffffff8316608052600380546001600160a01b0319166001600160a01b038416908117909155604080516000815260208101929092527fd8ad954fe808212ab9ed7139873e40807dff7995fe36e3d6cdeb8fa00fcebf10910160405180910390a16200012d620002af565b506200013f9150839050600462000312565b610140526200015081600562000312565b61016052815160208084019190912061010052815190820120610120524660c052620001e06101005161012051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60a05250503060e0525050600780546001600160a01b0319166001600160a01b0386169081179091556009829055604080516000815260208101929092527f940dcf34ec2e245e837ee4599997e577ce274d7b87c73238e2878ac7ea1af2f1910160405180910390a16040805160008152602081018390527f6c336d0e5e74bb26a5e2d4646801801837b0fdbaddd9131923fd42d740449731910160405180910390a1505050506200068f565b3390565b600180546001600160a01b0319169055620002ac816200034b565b50565b620002b96200039b565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620002f53390565b6040516001600160a01b03909116815260200160405180910390a1565b600060208351101562000332576200032a83620003f7565b905062000345565b816200033f84826200054e565b5060ff90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620003af600154600160a01b900460ff1690565b15620003f55760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064015b60405180910390fd5b565b600080829050601f8151111562000425578260405163305a27a960e01b8152600401620003ec91906200061a565b805162000432826200066a565b179392505050565b80516001600160a01b03811681146200045257600080fd5b919050565b600080600080608085870312156200046e57600080fd5b62000479856200043a565b935062000489602086016200043a565b925062000499604086016200043a565b6060959095015193969295505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004d457607f821691505b602082108103620004f557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200054957600081815260208120601f850160051c81016020861015620005245750805b601f850160051c820191505b81811015620005455782815560010162000530565b5050505b505050565b81516001600160401b038111156200056a576200056a620004a9565b62000582816200057b8454620004bf565b84620004fb565b602080601f831160018114620005ba5760008415620005a15750858301515b600019600386901b1c1916600185901b17855562000545565b600085815260208120601f198616915b82811015620005eb57888601518255948401946001909101908401620005ca565b50858210156200060a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b8181101562000649578581018301518582016040015282016200062b565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620004f55760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051613c5862000703600039600061132e01526000611303015260006125950152600061256d015260006124c8015260006124f20152600061251c01526000818161068c01528181610c040152610ee30152613c586000f3fe608060405234801561001057600080fd5b50600436106102ff5760003560e01c80637cd07e471161019c578063a526d83b116100ee578063d881039511610097578063f27995e311610071578063f27995e3146107d3578063f2fde38b146107f4578063ffa1ad741461080757600080fd5b8063d88103951461076b578063e30c3978146107ac578063e33acf38146107ca57600080fd5b8063b221dac4116100c8578063b221dac41461071e578063b577556114610731578063d4c048091461075857600080fd5b8063a526d83b146106c2578063ac34cc5a146106d5578063b06faf62146106f557600080fd5b806384b0196e116101505780638fd3ab801161012a5780638fd3ab801461065a57806395e7549f14610662578063a06db7dc1461068757600080fd5b806384b0196e146105e25780638b21e484146105fd5780638da5cb5b1461063c57600080fd5b8063803347371161018157806380334737146105a757806381749468146105c75780638456cb59146105da57600080fd5b80637cd07e47146105515780637ecebe001461057157600080fd5b80634980f28811610255578063708e9c7011610209578063787bd966116101e3578063787bd9661461052e57806378e890ba1461054157806379ba50971461054957600080fd5b8063708e9c70146105005780637140415614610513578063715018a61461052657600080fd5b80635c975abb1161023a5780635c975abb146104ad5780636840b75e146104d057806369615a4c146104e357600080fd5b80634980f2881461047957806358edef4c1461049a57600080fd5b8063207e3d69116102b75780633f4ba83a116102915780633f4ba83a1461045657806346b3f4291461045e57806347cf8d4d1461047157600080fd5b8063207e3d691461041b57806323cf311814610430578063368ab6101461044357600080fd5b80630e24e34c116102e85780630e24e34c146103815780630ea9442c146103db5780631f64222f146103fb57600080fd5b80630633b14a146103045780630aa13b8c1461033c575b600080fd5b610327610312366004612ead565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b60075461035c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610333565b6103cd61038f366004612ef9565b600c602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff811690610100900463ffffffff1682565b60405161033392919061303c565b6103ee6103e936600461306c565b610843565b604051610333919061310f565b61040e610409366004613122565b610863565b60405161033391906131a3565b61042e61042936600461321d565b610880565b005b61042e61043e366004612ead565b6108f9565b61042e6104513660046132c4565b6109fd565b61042e610b6d565b61042e61046c366004613350565b610b7f565b61042e610d31565b61048c610487366004613392565b610e1c565b604051908152602001610333565b61042e6104a83660046133ab565b610e27565b60015474010000000000000000000000000000000000000000900460ff16610327565b61048c6104de366004613122565b610e46565b33600090815260066020526040902080546001810190915561048c565b61042e61050e366004613350565b610e5e565b61042e610521366004612ead565b611058565b61042e6110d4565b61042e61053c3660046133e1565b6110e6565b61048c611117565b61042e611121565b60035461035c9073ffffffffffffffffffffffffffffffffffffffff1681565b61048c61057f366004612ead565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60085461035c9073ffffffffffffffffffffffffffffffffffffffff1681565b61042e6105d5366004612ead565b6111db565b61042e61127e565b6105ea6112f5565b604051610333979695949392919061346d565b6003546106269074010000000000000000000000000000000000000000900464ffffffffff1681565b60405164ffffffffff9091168152602001610333565b60005473ffffffffffffffffffffffffffffffffffffffff1661035c565b61042e61139a565b6008546103279074010000000000000000000000000000000000000000900460ff1681565b6106ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff9091168152602001610333565b61042e6106d0366004612ead565b6114cb565b6106e86106e336600461352c565b61154a565b6040516103339190613578565b60035474010000000000000000000000000000000000000000900464ffffffffff161515610327565b61042e61072c366004612ead565b6115d9565b61048c7f32e091a0c6fc95c826855f4e40ebda4957b528bd84c9062416ceb903082dabe481565b61042e610766366004613392565b6116d1565b61035c61077936600461359f565b600d60209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1661035c565b61048c60095481565b6107e66107e13660046135c9565b611755565b604051610333929190613604565b61042e610802366004612ead565b611898565b6103ee6040518060400160405280600a81526020017f323032332e31312e31350000000000000000000000000000000000000000000081525081565b6060610859826108538686611948565b906119d6565b90505b9392505050565b60606108776108728484611948565b611a88565b90505b92915050565b610888611b65565b60085473ffffffffffffffffffffffffffffffffffffffff1633146108d9576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108f06108e588611bea565b878787878787611cc0565b50505050505050565b610901611cd1565b60035474010000000000000000000000000000000000000000900464ffffffffff161561095a576040517fca1c3cbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962611d52565b6003546040805173ffffffffffffffffffffffffffffffffffffffff928316815291831660208301527fd8ad954fe808212ab9ed7139873e40807dff7995fe36e3d6cdeb8fa00fcebf10910160405180910390a1600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a05611cd1565b8263ffffffff16600003610a45576040517f36dccb4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff16600003610a82576040517f5110099800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff83166000818152600d6020908152604080832060ff8716808552908352928190205481519485529184019290925273ffffffffffffffffffffffffffffffffffffffff9081168383015283166060830152517fd964242236f6208120d76a25cd886db49c82403f50d88dfd1bc865ee60ad462d9181900360800190a163ffffffff9092166000908152600d6020908152604080832060ff909416835292905220805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b610b75611cd1565b610b7d611dd6565b565b60035473ffffffffffffffffffffffffffffffffffffffff163314610bd0576040517f8020644900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035474010000000000000000000000000000000000000000900464ffffffffff1615158015610c575750600354610c4d907f000000000000000000000000000000000000000000000000000000000000000062ffffff169074010000000000000000000000000000000000000000900464ffffffffff16613655565b64ffffffffff1642115b15610c8e576040517fca0dc97b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c96611d52565b60005b81811015610d2c5736838383818110610cb457610cb461367a565b9050602002810190610cc691906136a9565b905060005b610cd860208301836136e7565b9050811015610d2257610d1a8235610cf360208501856136e7565b84818110610d0357610d0361367a565b9050602002810190610d15919061374f565b611e53565b600101610ccb565b5050600101610c99565b505050565b610d39611cd1565b60085474010000000000000000000000000000000000000000900460ff1615610d8e576040517f351f92c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085460405173ffffffffffffffffffffffffffffffffffffffff90911681527fcb685c7ba5a65fe9e6be9b7decbb5dc8ebba92bcae3cb09fc2a5a075b1eb57729060200160405180910390a1600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b600061087a82611f5a565b610e2f611b65565b610e42610e3b33611bea565b8383611fa2565b5050565b6000610877610e558484611948565b5490565b905090565b60035473ffffffffffffffffffffffffffffffffffffffff163314610eaf576040517f8020644900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035474010000000000000000000000000000000000000000900464ffffffffff1615158015610f365750600354610f2c907f000000000000000000000000000000000000000000000000000000000000000062ffffff169074010000000000000000000000000000000000000000900464ffffffffff16613655565b64ffffffffff1642115b15610f6d576040517fca0dc97b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f75611d52565b60005b81811015610d2c5736838383818110610f9357610f9361367a565b9050602002810190610fa591906136a9565b905060005b610fb760208301836136e7565b905081101561104e5761104682356001610fd460208601866136e7565b85818110610fe457610fe461367a565b9050602002810190610ff691906136a9565b611000908061374f565b600161100f60208901896136e7565b8881811061101f5761101f61367a565b905060200281019061103191906136a9565b61103f90602081019061374f565b600061209e565b600101610faa565b5050600101610f78565b611060611cd1565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fbe7c7ac3248df4581c206a84aab3cb4e7d521b5398b42b681757f78a5a7d411e9190a250565b6110dc611cd1565b610b7d6000612371565b6110ee611b65565b6110fc8686868686866123a2565b61110f61110887611bea565b8686611fa2565b505050505050565b6000610e596124ae565b600154339073ffffffffffffffffffffffffffffffffffffffff1681146111cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6111d881612371565b50565b6111e3611cd1565b6007546040805173ffffffffffffffffffffffffffffffffffffffff928316815291831660208301527f940dcf34ec2e245e837ee4599997e577ce274d7b87c73238e2878ac7ea1af2f1910160405180910390a1600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633148015906112b657503360009081526002602052604090205460ff16155b156112ed576040517fcae1d95600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7d6125e6565b6000606080828080836113297f00000000000000000000000000000000000000000000000000000000000000006004612655565b6113547f00000000000000000000000000000000000000000000000000000000000000006005612655565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146113eb576040517f8020644900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035474010000000000000000000000000000000000000000900464ffffffffff1615611444576040517fca1c3cbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61144c611d52565b600380547fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004264ffffffffff90811682029290921792839055604051920416907fe4a25c0c2cbe89d6ad8b64c61a7dbdd20d1f781f6023f1ab94ebb7fe0aef6ab890600090a2565b6114d3611cd1565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f87dc5eecd6d6bdeae407c426da6bfba5b7190befc554ed5d4d62dd5cf939fbae9190a250565b60408051808201909152600080825260208201526000848152600c602052604090819020905161157d90859085906137b4565b908152604080519182900360200182208282019091528054829060ff1660028111156115ab576115ab612fd2565b60028111156115bc576115bc612fd2565b81529054610100900463ffffffff16602090910152949350505050565b6115e1611cd1565b60085474010000000000000000000000000000000000000000900460ff1615611636576040517f351f92c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008546040805173ffffffffffffffffffffffffffffffffffffffff928316815291831660208301527f56785750704201befc0a27dae1e5d37835a8ad6e35affc87136ed24d1ac694ac910160405180910390a1600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6116d9611cd1565b6009548111611714576040517fc5ce0d9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460408051918252602082018390527f6c336d0e5e74bb26a5e2d4646801801837b0fdbaddd9131923fd42d740449731910160405180910390a1600955565b60606000806117648787611948565b90506000611770825490565b90508086106117b25760408051600080825260208201909252906117a4565b606081526020019060019003908161178f5790505b50600093509350505061188f565b60006117be87836137c4565b905060008682106117cf57866117d1565b815b90508067ffffffffffffffff8111156117ec576117ec612eca565b60405190808252806020026020018201604052801561181f57816020015b606081526020019060019003908161180a5790505b50955060005b818110156118715761184161183a828b6137d7565b86906119d6565b8782815181106118535761185361367a565b60200260200101819052508080611869906137ea565b915050611825565b5061187c81896137d7565b945082851061188a57600094505b505050505b94509492505050565b6118a0611cd1565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561190360005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000600182600281111561195e5761195e612fd2565b0361197757506000828152600a6020526040902061087a565b600282600281111561198b5761198b612fd2565b036119a457506000828152600b6020526040902061087a565b6040517fbaf3f0f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608260000182815481106119ed576119ed61367a565b906000526020600020018054611a0290613822565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2e90613822565b8015611a7b5780601f10611a5057610100808354040283529160200191611a7b565b820191906000526020600020905b815481529060010190602001808311611a5e57829003601f168201915b5050505050905092915050565b606081600001805480602002602001604051908101604052809291908181526020016000905b82821015611b5a578382906000526020600020018054611acd90613822565b80601f0160208091040260200160405190810160405280929190818152602001828054611af990613822565b8015611b465780601f10611b1b57610100808354040283529160200191611b46565b820191906000526020600020905b815481529060010190602001808311611b2957829003601f168201915b505050505081526020019060010190611aae565b505050509050919050565b60015474010000000000000000000000000000000000000000900460ff1615610b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016111c6565b6007546040517fd94fe83200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600092169063d94fe83290602401602060405180830381865afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f9190613875565b905080600003611cbb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6108f087878787878787600161209e565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111c6565b60015474010000000000000000000000000000000000000000900460ff16610b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016111c6565b611dde611d52565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000838152600c60205260408082209051611e7190859085906137b4565b90815260405190819003602001902090506001815460ff166002811115611e9a57611e9a612fd2565b14611ed1576040517fbaf3f0f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611edc848484612700565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000168155604051611f1290849084906137b4565b6040518091039020847f1ecc1009ebad5d2fb61239462f4f9f6f152662defe1845fc87f07d96bd1c60b48585604051611f4c9291906138d7565b60405180910390a350505050565b600061087a611f676124ae565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000838152600c60205260408082209051611fc090859085906137b4565b90815260405190819003602001902090506001815460ff166002811115611fe957611fe9612fd2565b14612020576040517fbaf3f0f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61202b84848461271f565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600217815560405161206490849084906137b4565b6040518091039020847f09e77066e0155f46785be12f6938a6b2e4be4381e59058129ce15f355cb969588585604051611f4c9291906138d7565b6000888152600c602052604080822090516120bc90899089906137b4565b90815260405190819003602001902090506000815460ff1660028111156120e5576120e5612fd2565b1461211c576040517fbaf3f0f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095461212a8a6001610e46565b10612161576040517f2926404200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff88166000908152600d6020908152604080832060ff8916845290915290205473ffffffffffffffffffffffffffffffffffffffff16806121e3576040517fb736f27f00000000000000000000000000000000000000000000000000000000815263ffffffff8a16600482015260ff871660248201526044016111c6565b6121ee8a8989612752565b815463ffffffff8a16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090911617600117825560405161223590899089906137b4565b60405180910390208963ffffffff168b7f7d285df41058466977811345cd453c0c52e8d841ffaabc74fc050f277ad4de028b8b8b8b8b60405161227c9594939291906138eb565b60405180910390a48215612365576040517faa4e0ce800000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff83169063aa4e0ce8906122e7908e908d908d908c908c90600401613927565b6020604051808303816000875af1158015612306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232a9190613954565b905080612363576040517fbcecb64a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b50505050505050505050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556111d88161276b565b61110f6124707f32e091a0c6fc95c826855f4e40ebda4957b528bd84c9062416ceb903082dabe48888886040516123da9291906137b4565b60405180910390206124168b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080546001810190915590565b60408051602081019590955273ffffffffffffffffffffffffffffffffffffffff909316928401929092526060830152608082015260a0810186905260c00160405160208183030381529060405280519060200120611f5a565b878585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127e092505050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561251457507f000000000000000000000000000000000000000000000000000000000000000046145b1561253e57507f000000000000000000000000000000000000000000000000000000000000000090565b610e59604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6125ee611b65565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e293390565b606060ff831461266f576126688361285b565b905061087a565b81805461267b90613822565b80601f01602080910402602001604051908101604052809291908181526020018280546126a790613822565b80156126f45780601f106126c9576101008083540402835291602001916126f4565b820191906000526020600020905b8154815290600101906020018083116126d757829003601f168201915b5050505050905061087a565b6000838152600a6020526040902061271990838361289a565b50505050565b6000838152600a6020526040902061273890838361289a565b506000838152600b60205260409020612719908383612a5d565b6000838152600a60205260409020612719908383612a5d565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8142111561281a576040517f0819bdcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612825838583612ac3565b612719576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060600061286883612b3e565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000808460010184846040516128b19291906137b4565b908152602001604051809103902054905080600014612a535760006128d76001836137c4565b86549091506000906128eb906001906137c4565b90508181146129f257600087600001828154811061290b5761290b61367a565b90600052602060002001805461292090613822565b80601f016020809104026020016040519081016040528092919081815260200182805461294c90613822565b80156129995780601f1061296e57610100808354040283529160200191612999565b820191906000526020600020905b81548152906001019060200180831161297c57829003601f168201915b50505050509050808860000184815481106129b6576129b661367a565b9060005260206000200190816129cc91906139bc565b508388600101826040516129e09190613ad6565b90815260405190819003602001902055505b8654879080612a0357612a03613ae8565b600190038181906000526020600020016000612a1f9190612e3d565b9055866001018686604051612a359291906137b4565b9081526020016040518091039020600090556001935050505061085c565b600091505061085c565b6000612a6a848484612b7f565b612abb57835460018101855560008581526020902001612a8b838583613b17565b5083546040516001860190612aa390869086906137b4565b9081526040519081900360200190205550600161085c565b50600061085c565b6000806000612ad28585612baf565b90925090506000816004811115612aeb57612aeb612fd2565b148015612b2357508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612b345750612b34868686612bf4565b9695505050505050565b600060ff8216601f81111561087a576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001018383604051612b959291906137b4565b908152604051908190036020019020541515949350505050565b6000808251604103612be55760208301516040840151606085015160001a612bd987828585612d51565b94509450505050612bed565b506000905060025b9250929050565b60008060008573ffffffffffffffffffffffffffffffffffffffff16631626ba7e60e01b8686604051602401612c2b929190613c32565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612cb49190613ad6565b600060405180830381855afa9150503d8060008114612cef576040519150601f19603f3d011682016040523d82523d6000602084013e612cf4565b606091505b5091509150818015612d0857506020815110155b8015612b34575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090612d469083016020908101908401613875565b149695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612d88575060009050600361188f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612ddc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612e305760006001925092505061188f565b9660009650945050505050565b508054612e4990613822565b6000825580601f10612e59575050565b601f0160209004906000526020600020908101906111d891905b80821115612e875760008155600101612e73565b5090565b73ffffffffffffffffffffffffffffffffffffffff811681146111d857600080fd5b600060208284031215612ebf57600080fd5b813561085c81612e8b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612f0c57600080fd5b82359150602083013567ffffffffffffffff80821115612f2b57600080fd5b818501915085601f830112612f3f57600080fd5b813581811115612f5157612f51612eca565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612f9757612f97612eca565b81604052828152886020848701011115612fb057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110613038577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6040810161304a8285613001565b63ffffffff831660208301529392505050565b803560038110611cbb57600080fd5b60008060006060848603121561308157600080fd5b833592506130916020850161305d565b9150604084013590509250925092565b60005b838110156130bc5781810151838201526020016130a4565b50506000910152565b600081518084526130dd8160208601602086016130a1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061087760208301846130c5565b6000806040838503121561313557600080fd5b823591506131456020840161305d565b90509250929050565b600081518084526020808501808196508360051b8101915082860160005b858110156131965782840389526131848483516130c5565b9885019893509084019060010161316c565b5091979650505050505050565b602081526000610877602083018461314e565b803563ffffffff81168114611cbb57600080fd5b60008083601f8401126131dc57600080fd5b50813567ffffffffffffffff8111156131f457600080fd5b602083019150836020828501011115612bed57600080fd5b803560ff81168114611cbb57600080fd5b600080600080600080600060a0888a03121561323857600080fd5b873561324381612e8b565b9650613251602089016131b6565b9550604088013567ffffffffffffffff8082111561326e57600080fd5b61327a8b838c016131ca565b909750955085915061328e60608b0161320c565b945060808a01359150808211156132a457600080fd5b506132b18a828b016131ca565b989b979a50959850939692959293505050565b6000806000606084860312156132d957600080fd5b6132e2846131b6565b92506132f06020850161320c565b9150604084013561330081612e8b565b809150509250925092565b60008083601f84011261331d57600080fd5b50813567ffffffffffffffff81111561333557600080fd5b6020830191508360208260051b8501011115612bed57600080fd5b6000806020838503121561336357600080fd5b823567ffffffffffffffff81111561337a57600080fd5b6133868582860161330b565b90969095509350505050565b6000602082840312156133a457600080fd5b5035919050565b600080602083850312156133be57600080fd5b823567ffffffffffffffff8111156133d557600080fd5b613386858286016131ca565b600080600080600080608087890312156133fa57600080fd5b863561340581612e8b565b9550602087013567ffffffffffffffff8082111561342257600080fd5b61342e8a838b016131ca565b909750955060408901359450606089013591508082111561344e57600080fd5b5061345b89828a016131ca565b979a9699509497509295939492505050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526134a960e084018a6130c5565b83810360408501526134bb818a6130c5565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561351a578351835292840192918401916001016134fe565b50909c9b505050505050505050505050565b60008060006040848603121561354157600080fd5b83359250602084013567ffffffffffffffff81111561355f57600080fd5b61356b868287016131ca565b9497909650939450505050565b600060408201905061358b828451613001565b60209283015163ffffffff16919092015290565b600080604083850312156135b257600080fd5b6135bb836131b6565b91506131456020840161320c565b600080600080608085870312156135df57600080fd5b843593506135ef6020860161305d565b93969395505050506040820135916060013590565b604081526000613617604083018561314e565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b64ffffffffff81811683821601908082111561367357613673613626565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126136dd57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261371c57600080fd5b83018035915067ffffffffffffffff82111561373757600080fd5b6020019150600581901b3603821315612bed57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261378457600080fd5b83018035915067ffffffffffffffff82111561379f57600080fd5b602001915036819003821315612bed57600080fd5b8183823760009101908152919050565b8181038181111561087a5761087a613626565b8082018082111561087a5761087a613626565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361381b5761381b613626565b5060010190565b600181811c9082168061383657607f821691505b60208210810361386f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561388757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061085960208301848661388e565b6060815260006138ff60608301878961388e565b60ff86166020840152828103604084015261391b81858761388e565b98975050505050505050565b85815260606020820152600061394160608301868861388e565b828103604084015261391b81858761388e565b60006020828403121561396657600080fd5b8151801515811461085c57600080fd5b601f821115610d2c57600081815260208120601f850160051c8101602086101561399d5750805b601f850160051c820191505b8181101561110f578281556001016139a9565b815167ffffffffffffffff8111156139d6576139d6612eca565b6139ea816139e48454613822565b84613976565b602080601f831160018114613a3d5760008415613a075750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561110f565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613a8a57888601518255948401946001909101908401613a6b565b5085821015613ac657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600082516136dd8184602087016130a1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b67ffffffffffffffff831115613b2f57613b2f612eca565b613b4383613b3d8354613822565b83613976565b6000601f841160018114613b955760008515613b5f5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355613c2b565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613be45786850135825560209485019460019092019101613bc4565b5086821015613c1f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b82815260406020820152600061085960408301846130c556fea164736f6c6343000815000a00000000000000000000000000000000fc6c5f01fc30151999387bb99a9f489b0000000000000000000000002d93c2f74b2c4697f9ea85d0450148aa45d4d5a2000000000000000000000000299707e127cc77de01b9fd968bc0ff475f3c634200000000000000000000000000000000000000000000000000000000000003e8
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102ff5760003560e01c80637cd07e471161019c578063a526d83b116100ee578063d881039511610097578063f27995e311610071578063f27995e3146107d3578063f2fde38b146107f4578063ffa1ad741461080757600080fd5b8063d88103951461076b578063e30c3978146107ac578063e33acf38146107ca57600080fd5b8063b221dac4116100c8578063b221dac41461071e578063b577556114610731578063d4c048091461075857600080fd5b8063a526d83b146106c2578063ac34cc5a146106d5578063b06faf62146106f557600080fd5b806384b0196e116101505780638fd3ab801161012a5780638fd3ab801461065a57806395e7549f14610662578063a06db7dc1461068757600080fd5b806384b0196e146105e25780638b21e484146105fd5780638da5cb5b1461063c57600080fd5b8063803347371161018157806380334737146105a757806381749468146105c75780638456cb59146105da57600080fd5b80637cd07e47146105515780637ecebe001461057157600080fd5b80634980f28811610255578063708e9c7011610209578063787bd966116101e3578063787bd9661461052e57806378e890ba1461054157806379ba50971461054957600080fd5b8063708e9c70146105005780637140415614610513578063715018a61461052657600080fd5b80635c975abb1161023a5780635c975abb146104ad5780636840b75e146104d057806369615a4c146104e357600080fd5b80634980f2881461047957806358edef4c1461049a57600080fd5b8063207e3d69116102b75780633f4ba83a116102915780633f4ba83a1461045657806346b3f4291461045e57806347cf8d4d1461047157600080fd5b8063207e3d691461041b57806323cf311814610430578063368ab6101461044357600080fd5b80630e24e34c116102e85780630e24e34c146103815780630ea9442c146103db5780631f64222f146103fb57600080fd5b80630633b14a146103045780630aa13b8c1461033c575b600080fd5b610327610312366004612ead565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b60075461035c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610333565b6103cd61038f366004612ef9565b600c602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff811690610100900463ffffffff1682565b60405161033392919061303c565b6103ee6103e936600461306c565b610843565b604051610333919061310f565b61040e610409366004613122565b610863565b60405161033391906131a3565b61042e61042936600461321d565b610880565b005b61042e61043e366004612ead565b6108f9565b61042e6104513660046132c4565b6109fd565b61042e610b6d565b61042e61046c366004613350565b610b7f565b61042e610d31565b61048c610487366004613392565b610e1c565b604051908152602001610333565b61042e6104a83660046133ab565b610e27565b60015474010000000000000000000000000000000000000000900460ff16610327565b61048c6104de366004613122565b610e46565b33600090815260066020526040902080546001810190915561048c565b61042e61050e366004613350565b610e5e565b61042e610521366004612ead565b611058565b61042e6110d4565b61042e61053c3660046133e1565b6110e6565b61048c611117565b61042e611121565b60035461035c9073ffffffffffffffffffffffffffffffffffffffff1681565b61048c61057f366004612ead565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60085461035c9073ffffffffffffffffffffffffffffffffffffffff1681565b61042e6105d5366004612ead565b6111db565b61042e61127e565b6105ea6112f5565b604051610333979695949392919061346d565b6003546106269074010000000000000000000000000000000000000000900464ffffffffff1681565b60405164ffffffffff9091168152602001610333565b60005473ffffffffffffffffffffffffffffffffffffffff1661035c565b61042e61139a565b6008546103279074010000000000000000000000000000000000000000900460ff1681565b6106ae7f000000000000000000000000000000000000000000000000000000000001518081565b60405162ffffff9091168152602001610333565b61042e6106d0366004612ead565b6114cb565b6106e86106e336600461352c565b61154a565b6040516103339190613578565b60035474010000000000000000000000000000000000000000900464ffffffffff161515610327565b61042e61072c366004612ead565b6115d9565b61048c7f32e091a0c6fc95c826855f4e40ebda4957b528bd84c9062416ceb903082dabe481565b61042e610766366004613392565b6116d1565b61035c61077936600461359f565b600d60209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1661035c565b61048c60095481565b6107e66107e13660046135c9565b611755565b604051610333929190613604565b61042e610802366004612ead565b611898565b6103ee6040518060400160405280600a81526020017f323032332e31312e31350000000000000000000000000000000000000000000081525081565b6060610859826108538686611948565b906119d6565b90505b9392505050565b60606108776108728484611948565b611a88565b90505b92915050565b610888611b65565b60085473ffffffffffffffffffffffffffffffffffffffff1633146108d9576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108f06108e588611bea565b878787878787611cc0565b50505050505050565b610901611cd1565b60035474010000000000000000000000000000000000000000900464ffffffffff161561095a576040517fca1c3cbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962611d52565b6003546040805173ffffffffffffffffffffffffffffffffffffffff928316815291831660208301527fd8ad954fe808212ab9ed7139873e40807dff7995fe36e3d6cdeb8fa00fcebf10910160405180910390a1600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a05611cd1565b8263ffffffff16600003610a45576040517f36dccb4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff16600003610a82576040517f5110099800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff83166000818152600d6020908152604080832060ff8716808552908352928190205481519485529184019290925273ffffffffffffffffffffffffffffffffffffffff9081168383015283166060830152517fd964242236f6208120d76a25cd886db49c82403f50d88dfd1bc865ee60ad462d9181900360800190a163ffffffff9092166000908152600d6020908152604080832060ff909416835292905220805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055565b610b75611cd1565b610b7d611dd6565b565b60035473ffffffffffffffffffffffffffffffffffffffff163314610bd0576040517f8020644900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035474010000000000000000000000000000000000000000900464ffffffffff1615158015610c575750600354610c4d907f000000000000000000000000000000000000000000000000000000000001518062ffffff169074010000000000000000000000000000000000000000900464ffffffffff16613655565b64ffffffffff1642115b15610c8e576040517fca0dc97b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c96611d52565b60005b81811015610d2c5736838383818110610cb457610cb461367a565b9050602002810190610cc691906136a9565b905060005b610cd860208301836136e7565b9050811015610d2257610d1a8235610cf360208501856136e7565b84818110610d0357610d0361367a565b9050602002810190610d15919061374f565b611e53565b600101610ccb565b5050600101610c99565b505050565b610d39611cd1565b60085474010000000000000000000000000000000000000000900460ff1615610d8e576040517f351f92c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085460405173ffffffffffffffffffffffffffffffffffffffff90911681527fcb685c7ba5a65fe9e6be9b7decbb5dc8ebba92bcae3cb09fc2a5a075b1eb57729060200160405180910390a1600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b600061087a82611f5a565b610e2f611b65565b610e42610e3b33611bea565b8383611fa2565b5050565b6000610877610e558484611948565b5490565b905090565b60035473ffffffffffffffffffffffffffffffffffffffff163314610eaf576040517f8020644900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035474010000000000000000000000000000000000000000900464ffffffffff1615158015610f365750600354610f2c907f000000000000000000000000000000000000000000000000000000000001518062ffffff169074010000000000000000000000000000000000000000900464ffffffffff16613655565b64ffffffffff1642115b15610f6d576040517fca0dc97b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f75611d52565b60005b81811015610d2c5736838383818110610f9357610f9361367a565b9050602002810190610fa591906136a9565b905060005b610fb760208301836136e7565b905081101561104e5761104682356001610fd460208601866136e7565b85818110610fe457610fe461367a565b9050602002810190610ff691906136a9565b611000908061374f565b600161100f60208901896136e7565b8881811061101f5761101f61367a565b905060200281019061103191906136a9565b61103f90602081019061374f565b600061209e565b600101610faa565b5050600101610f78565b611060611cd1565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fbe7c7ac3248df4581c206a84aab3cb4e7d521b5398b42b681757f78a5a7d411e9190a250565b6110dc611cd1565b610b7d6000612371565b6110ee611b65565b6110fc8686868686866123a2565b61110f61110887611bea565b8686611fa2565b505050505050565b6000610e596124ae565b600154339073ffffffffffffffffffffffffffffffffffffffff1681146111cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6111d881612371565b50565b6111e3611cd1565b6007546040805173ffffffffffffffffffffffffffffffffffffffff928316815291831660208301527f940dcf34ec2e245e837ee4599997e577ce274d7b87c73238e2878ac7ea1af2f1910160405180910390a1600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633148015906112b657503360009081526002602052604090205460ff16155b156112ed576040517fcae1d95600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7d6125e6565b6000606080828080836113297f466172636173746572204b6579526567697374727900000000000000000000156004612655565b6113547f31000000000000000000000000000000000000000000000000000000000000016005612655565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146113eb576040517f8020644900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035474010000000000000000000000000000000000000000900464ffffffffff1615611444576040517fca1c3cbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61144c611d52565b600380547fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004264ffffffffff90811682029290921792839055604051920416907fe4a25c0c2cbe89d6ad8b64c61a7dbdd20d1f781f6023f1ab94ebb7fe0aef6ab890600090a2565b6114d3611cd1565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f87dc5eecd6d6bdeae407c426da6bfba5b7190befc554ed5d4d62dd5cf939fbae9190a250565b60408051808201909152600080825260208201526000848152600c602052604090819020905161157d90859085906137b4565b908152604080519182900360200182208282019091528054829060ff1660028111156115ab576115ab612fd2565b60028111156115bc576115bc612fd2565b81529054610100900463ffffffff16602090910152949350505050565b6115e1611cd1565b60085474010000000000000000000000000000000000000000900460ff1615611636576040517f351f92c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008546040805173ffffffffffffffffffffffffffffffffffffffff928316815291831660208301527f56785750704201befc0a27dae1e5d37835a8ad6e35affc87136ed24d1ac694ac910160405180910390a1600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6116d9611cd1565b6009548111611714576040517fc5ce0d9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460408051918252602082018390527f6c336d0e5e74bb26a5e2d4646801801837b0fdbaddd9131923fd42d740449731910160405180910390a1600955565b60606000806117648787611948565b90506000611770825490565b90508086106117b25760408051600080825260208201909252906117a4565b606081526020019060019003908161178f5790505b50600093509350505061188f565b60006117be87836137c4565b905060008682106117cf57866117d1565b815b90508067ffffffffffffffff8111156117ec576117ec612eca565b60405190808252806020026020018201604052801561181f57816020015b606081526020019060019003908161180a5790505b50955060005b818110156118715761184161183a828b6137d7565b86906119d6565b8782815181106118535761185361367a565b60200260200101819052508080611869906137ea565b915050611825565b5061187c81896137d7565b945082851061188a57600094505b505050505b94509492505050565b6118a0611cd1565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561190360005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000600182600281111561195e5761195e612fd2565b0361197757506000828152600a6020526040902061087a565b600282600281111561198b5761198b612fd2565b036119a457506000828152600b6020526040902061087a565b6040517fbaf3f0f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608260000182815481106119ed576119ed61367a565b906000526020600020018054611a0290613822565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2e90613822565b8015611a7b5780601f10611a5057610100808354040283529160200191611a7b565b820191906000526020600020905b815481529060010190602001808311611a5e57829003601f168201915b5050505050905092915050565b606081600001805480602002602001604051908101604052809291908181526020016000905b82821015611b5a578382906000526020600020018054611acd90613822565b80601f0160208091040260200160405190810160405280929190818152602001828054611af990613822565b8015611b465780601f10611b1b57610100808354040283529160200191611b46565b820191906000526020600020905b815481529060010190602001808311611b2957829003601f168201915b505050505081526020019060010190611aae565b505050509050919050565b60015474010000000000000000000000000000000000000000900460ff1615610b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016111c6565b6007546040517fd94fe83200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600092169063d94fe83290602401602060405180830381865afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f9190613875565b905080600003611cbb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6108f087878787878787600161209e565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111c6565b60015474010000000000000000000000000000000000000000900460ff16610b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016111c6565b611dde611d52565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000838152600c60205260408082209051611e7190859085906137b4565b90815260405190819003602001902090506001815460ff166002811115611e9a57611e9a612fd2565b14611ed1576040517fbaf3f0f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611edc848484612700565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000168155604051611f1290849084906137b4565b6040518091039020847f1ecc1009ebad5d2fb61239462f4f9f6f152662defe1845fc87f07d96bd1c60b48585604051611f4c9291906138d7565b60405180910390a350505050565b600061087a611f676124ae565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000838152600c60205260408082209051611fc090859085906137b4565b90815260405190819003602001902090506001815460ff166002811115611fe957611fe9612fd2565b14612020576040517fbaf3f0f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61202b84848461271f565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600217815560405161206490849084906137b4565b6040518091039020847f09e77066e0155f46785be12f6938a6b2e4be4381e59058129ce15f355cb969588585604051611f4c9291906138d7565b6000888152600c602052604080822090516120bc90899089906137b4565b90815260405190819003602001902090506000815460ff1660028111156120e5576120e5612fd2565b1461211c576040517fbaf3f0f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095461212a8a6001610e46565b10612161576040517f2926404200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff88166000908152600d6020908152604080832060ff8916845290915290205473ffffffffffffffffffffffffffffffffffffffff16806121e3576040517fb736f27f00000000000000000000000000000000000000000000000000000000815263ffffffff8a16600482015260ff871660248201526044016111c6565b6121ee8a8989612752565b815463ffffffff8a16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090911617600117825560405161223590899089906137b4565b60405180910390208963ffffffff168b7f7d285df41058466977811345cd453c0c52e8d841ffaabc74fc050f277ad4de028b8b8b8b8b60405161227c9594939291906138eb565b60405180910390a48215612365576040517faa4e0ce800000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff83169063aa4e0ce8906122e7908e908d908d908c908c90600401613927565b6020604051808303816000875af1158015612306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232a9190613954565b905080612363576040517fbcecb64a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b50505050505050505050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556111d88161276b565b61110f6124707f32e091a0c6fc95c826855f4e40ebda4957b528bd84c9062416ceb903082dabe48888886040516123da9291906137b4565b60405180910390206124168b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080546001810190915590565b60408051602081019590955273ffffffffffffffffffffffffffffffffffffffff909316928401929092526060830152608082015260a0810186905260c00160405160208183030381529060405280519060200120611f5a565b878585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127e092505050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000fc1237824fb747abde0ff18990e59b7e1614801561251457507f000000000000000000000000000000000000000000000000000000000000000a46145b1561253e57507fff3ecb95b37f8812f0476e95e5aa93b8a55c60c43d2300e92854be3a1a380cf990565b610e59604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527faa768cc38131c77b49c9fbf00aa458bd9ab839a7ca2b242e444962d8177a84d4918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6125ee611b65565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e293390565b606060ff831461266f576126688361285b565b905061087a565b81805461267b90613822565b80601f01602080910402602001604051908101604052809291908181526020018280546126a790613822565b80156126f45780601f106126c9576101008083540402835291602001916126f4565b820191906000526020600020905b8154815290600101906020018083116126d757829003601f168201915b5050505050905061087a565b6000838152600a6020526040902061271990838361289a565b50505050565b6000838152600a6020526040902061273890838361289a565b506000838152600b60205260409020612719908383612a5d565b6000838152600a60205260409020612719908383612a5d565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8142111561281a576040517f0819bdcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612825838583612ac3565b612719576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060600061286883612b3e565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000808460010184846040516128b19291906137b4565b908152602001604051809103902054905080600014612a535760006128d76001836137c4565b86549091506000906128eb906001906137c4565b90508181146129f257600087600001828154811061290b5761290b61367a565b90600052602060002001805461292090613822565b80601f016020809104026020016040519081016040528092919081815260200182805461294c90613822565b80156129995780601f1061296e57610100808354040283529160200191612999565b820191906000526020600020905b81548152906001019060200180831161297c57829003601f168201915b50505050509050808860000184815481106129b6576129b661367a565b9060005260206000200190816129cc91906139bc565b508388600101826040516129e09190613ad6565b90815260405190819003602001902055505b8654879080612a0357612a03613ae8565b600190038181906000526020600020016000612a1f9190612e3d565b9055866001018686604051612a359291906137b4565b9081526020016040518091039020600090556001935050505061085c565b600091505061085c565b6000612a6a848484612b7f565b612abb57835460018101855560008581526020902001612a8b838583613b17565b5083546040516001860190612aa390869086906137b4565b9081526040519081900360200190205550600161085c565b50600061085c565b6000806000612ad28585612baf565b90925090506000816004811115612aeb57612aeb612fd2565b148015612b2357508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612b345750612b34868686612bf4565b9695505050505050565b600060ff8216601f81111561087a576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001018383604051612b959291906137b4565b908152604051908190036020019020541515949350505050565b6000808251604103612be55760208301516040840151606085015160001a612bd987828585612d51565b94509450505050612bed565b506000905060025b9250929050565b60008060008573ffffffffffffffffffffffffffffffffffffffff16631626ba7e60e01b8686604051602401612c2b929190613c32565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612cb49190613ad6565b600060405180830381855afa9150503d8060008114612cef576040519150601f19603f3d011682016040523d82523d6000602084013e612cf4565b606091505b5091509150818015612d0857506020815110155b8015612b34575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090612d469083016020908101908401613875565b149695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612d88575060009050600361188f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612ddc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612e305760006001925092505061188f565b9660009650945050505050565b508054612e4990613822565b6000825580601f10612e59575050565b601f0160209004906000526020600020908101906111d891905b80821115612e875760008155600101612e73565b5090565b73ffffffffffffffffffffffffffffffffffffffff811681146111d857600080fd5b600060208284031215612ebf57600080fd5b813561085c81612e8b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612f0c57600080fd5b82359150602083013567ffffffffffffffff80821115612f2b57600080fd5b818501915085601f830112612f3f57600080fd5b813581811115612f5157612f51612eca565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612f9757612f97612eca565b81604052828152886020848701011115612fb057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110613038577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6040810161304a8285613001565b63ffffffff831660208301529392505050565b803560038110611cbb57600080fd5b60008060006060848603121561308157600080fd5b833592506130916020850161305d565b9150604084013590509250925092565b60005b838110156130bc5781810151838201526020016130a4565b50506000910152565b600081518084526130dd8160208601602086016130a1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061087760208301846130c5565b6000806040838503121561313557600080fd5b823591506131456020840161305d565b90509250929050565b600081518084526020808501808196508360051b8101915082860160005b858110156131965782840389526131848483516130c5565b9885019893509084019060010161316c565b5091979650505050505050565b602081526000610877602083018461314e565b803563ffffffff81168114611cbb57600080fd5b60008083601f8401126131dc57600080fd5b50813567ffffffffffffffff8111156131f457600080fd5b602083019150836020828501011115612bed57600080fd5b803560ff81168114611cbb57600080fd5b600080600080600080600060a0888a03121561323857600080fd5b873561324381612e8b565b9650613251602089016131b6565b9550604088013567ffffffffffffffff8082111561326e57600080fd5b61327a8b838c016131ca565b909750955085915061328e60608b0161320c565b945060808a01359150808211156132a457600080fd5b506132b18a828b016131ca565b989b979a50959850939692959293505050565b6000806000606084860312156132d957600080fd5b6132e2846131b6565b92506132f06020850161320c565b9150604084013561330081612e8b565b809150509250925092565b60008083601f84011261331d57600080fd5b50813567ffffffffffffffff81111561333557600080fd5b6020830191508360208260051b8501011115612bed57600080fd5b6000806020838503121561336357600080fd5b823567ffffffffffffffff81111561337a57600080fd5b6133868582860161330b565b90969095509350505050565b6000602082840312156133a457600080fd5b5035919050565b600080602083850312156133be57600080fd5b823567ffffffffffffffff8111156133d557600080fd5b613386858286016131ca565b600080600080600080608087890312156133fa57600080fd5b863561340581612e8b565b9550602087013567ffffffffffffffff8082111561342257600080fd5b61342e8a838b016131ca565b909750955060408901359450606089013591508082111561344e57600080fd5b5061345b89828a016131ca565b979a9699509497509295939492505050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526134a960e084018a6130c5565b83810360408501526134bb818a6130c5565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561351a578351835292840192918401916001016134fe565b50909c9b505050505050505050505050565b60008060006040848603121561354157600080fd5b83359250602084013567ffffffffffffffff81111561355f57600080fd5b61356b868287016131ca565b9497909650939450505050565b600060408201905061358b828451613001565b60209283015163ffffffff16919092015290565b600080604083850312156135b257600080fd5b6135bb836131b6565b91506131456020840161320c565b600080600080608085870312156135df57600080fd5b843593506135ef6020860161305d565b93969395505050506040820135916060013590565b604081526000613617604083018561314e565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b64ffffffffff81811683821601908082111561367357613673613626565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126136dd57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261371c57600080fd5b83018035915067ffffffffffffffff82111561373757600080fd5b6020019150600581901b3603821315612bed57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261378457600080fd5b83018035915067ffffffffffffffff82111561379f57600080fd5b602001915036819003821315612bed57600080fd5b8183823760009101908152919050565b8181038181111561087a5761087a613626565b8082018082111561087a5761087a613626565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361381b5761381b613626565b5060010190565b600181811c9082168061383657607f821691505b60208210810361386f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561388757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061085960208301848661388e565b6060815260006138ff60608301878961388e565b60ff86166020840152828103604084015261391b81858761388e565b98975050505050505050565b85815260606020820152600061394160608301868861388e565b828103604084015261391b81858761388e565b60006020828403121561396657600080fd5b8151801515811461085c57600080fd5b601f821115610d2c57600081815260208120601f850160051c8101602086101561399d5750805b601f850160051c820191505b8181101561110f578281556001016139a9565b815167ffffffffffffffff8111156139d6576139d6612eca565b6139ea816139e48454613822565b84613976565b602080601f831160018114613a3d5760008415613a075750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561110f565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613a8a57888601518255948401946001909101908401613a6b565b5085821015613ac657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600082516136dd8184602087016130a1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b67ffffffffffffffff831115613b2f57613b2f612eca565b613b4383613b3d8354613822565b83613976565b6000601f841160018114613b955760008515613b5f5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355613c2b565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613be45786850135825560209485019460019092019101613bc4565b5086821015613c1f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b82815260406020820152600061085960408301846130c556fea164736f6c6343000815000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000fc6c5f01fc30151999387bb99a9f489b0000000000000000000000002d93c2f74b2c4697f9ea85d0450148aa45d4d5a2000000000000000000000000299707e127cc77de01b9fd968bc0ff475f3c634200000000000000000000000000000000000000000000000000000000000003e8

-----Decoded View---------------
Arg [0] : _idRegistry (address): 0x00000000Fc6c5F01Fc30151999387Bb99A9f489b
Arg [1] : _migrator (address): 0x2D93c2F74b2C4697f9ea85D0450148AA45D4D5a2
Arg [2] : _initialOwner (address): 0x299707E127CC77DE01b9Fd968Bc0ff475f3C6342
Arg [3] : _maxKeysPerFid (uint256): 1000

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000fc6c5f01fc30151999387bb99a9f489b
Arg [1] : 0000000000000000000000002d93c2f74b2c4697f9ea85d0450148aa45d4d5a2
Arg [2] : 000000000000000000000000299707e127cc77de01b9fd968bc0ff475f3c6342
Arg [3] : 00000000000000000000000000000000000000000000000000000000000003e8

🤖 Code Reader

Generate instant answers for your smart contract questions using Al Models. Read more.

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.