UNPKG

@gooddollar/goodprotocol

Version:
1,123 lines 82.9 kB
{ "_format": "hh-sol-artifact-1", "contractName": "IdentityV3", "sourceName": "contracts/identity/IdentityV3.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "connected", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "AccountConnected", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "disconnected", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" } ], "name": "AccountDisconnected", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "BlacklistAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "BlacklistRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "ContractAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "ContractRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "WhitelistedAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "WhitelistedAuthenticated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "WhitelistedRemoved", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "IDENTITY_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TYPED_STRUCTURE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addBlacklisted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addWhitelisted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "string", "name": "did", "type": "string" } ], "name": "addWhitelistedWithDID", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "string", "name": "did", "type": "string" }, { "internalType": "uint256", "name": "orgChain", "type": "uint256" }, { "internalType": "uint256", "name": "dateAuthenticated", "type": "uint256" } ], "name": "addWhitelistedWithDIDAndChain", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addrToDID", "outputs": [ { "internalType": "string", "name": "did", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "authenticate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "authenticateWithTimestamp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "authenticationPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "avatar", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "connectAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "connectedAccounts", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dao", "outputs": [ { "internalType": "contract Controller", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "didHashToAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "connected", "type": "address" } ], "name": "disconnectAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getWhitelistedOnChainId", "outputs": [ { "internalType": "uint256", "name": "chainId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getWhitelistedRoot", "outputs": [ { "internalType": "address", "name": "whitelisted", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "identities", "outputs": [ { "internalType": "uint256", "name": "dateAuthenticated", "type": "uint256" }, { "internalType": "uint256", "name": "dateAdded", "type": "uint256" }, { "internalType": "string", "name": "did", "type": "string" }, { "internalType": "uint256", "name": "whitelistedOnChainId", "type": "uint256" }, { "internalType": "uint8", "name": "status", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_ns", "type": "address" } ], "name": "initDAO", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "contract IIdentity", "name": "_oldIdentity", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isBlacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isDAOContract", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isRegistered", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "lastAuthenticated", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nameService", "outputs": [ { "internalType": "contract INameService", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nativeToken", "outputs": [ { "internalType": "contract IGoodDollar", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oldIdentity", "outputs": [ { "internalType": "contract IIdentity", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "toPause", "type": "bool" } ], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeBlacklisted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeWhitelisted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceWhitelisted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "period", "type": "uint256" } ], "name": "setAuthenticationPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "string", "name": "did", "type": "string" } ], "name": "setDID", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "updateAvatar", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "whitelistedContracts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whitelistedCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051613a0761004c60003960008181610d7501528181610db5015281816111ce0152818161120e01526112860152613a076000f3fe60806040526004361061024f5760003560e01c806301ffc9a71461025457806302329a291461028957806308e0d29d146102ab57806310154bad146102cb578063188efc16146102eb5780631aaff63c1461030b5780631b0270991461033b5780631b3c90a81461035b5780632236684414610370578063248a9ca314610384578063291d9549146103a45780632b14dda8146103c45780632cec5330146103e45780632d0e9b46146104065780632f2ff15d1461043357806331b376e21461045357806336568abe1461046a5780633659cfe61461048a57806337a1a987146104aa5780633af32abf146104ca5780633e6326fc146104ea5780634125f0f21461050a5780634162169f1461052b578063485cc9551461054b5780634f1ef2861461056b57806352d1902d1461057e57806354f9f7a3146105935780635aef7de6146105b35780635c975abb146105d35780635f539d69146105ec578063613200401461060c57806367c759371461064357806391d148541461067a57806396a1ef791461069a578063a061922d146106ba578063a217fddf146106da578063b2a1de22146106ef578063b30f7e7f14610706578063c375c2ef1461071d578063c6a276c21461073d578063c73cc4ae1461075d578063d21685f41461077d578063d32628161461079d578063d547741f146107bd578063d6cd9473146107dd578063e1758bd8146107f2578063e1e360ba14610807578063e63ab1e914610827578063e737031a14610849578063f653b81e14610869578063fe575a871461089a578063fff930d4146108ba575b600080fd5b34801561026057600080fd5b5061027461026f366004612ff0565b6108da565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b506102a96102a4366004613028565b610911565b005b3480156102b757600080fd5b506102a96102c636600461305a565b610943565b3480156102d757600080fd5b506102a96102e636600461305a565b610950565b3480156102f757600080fd5b506102a961030636600461305a565b61097a565b34801561031757600080fd5b5061032d6000805160206138e483398151915281565b604051908152602001610280565b34801561034757600080fd5b506102a9610356366004613142565b6109f4565b34801561036757600080fd5b506102a9610a24565b34801561037c57600080fd5b506001610274565b34801561039057600080fd5b5061032d61039f366004613191565b610b4b565b3480156103b057600080fd5b506102a96103bf36600461305a565b610b60565b3480156103d057600080fd5b506102a96103df36600461305a565b610b89565b3480156103f057600080fd5b506103f9610c53565b60405161028091906131fa565b34801561041257600080fd5b5061042661042136600461305a565b610c6f565b604051610280919061320d565b34801561043f57600080fd5b506102a961044e366004613221565b610cd5565b34801561045f57600080fd5b5061032d6101985481565b34801561047657600080fd5b506102a9610485366004613221565b610cf1565b34801561049657600080fd5b506102a96104a536600461305a565b610d6b565b3480156104b657600080fd5b506102a96104c536600461305a565b610e30565b3480156104d657600080fd5b506102746104e536600461305a565b610eee565b3480156104f657600080fd5b50606754610426906001600160a01b031681565b34801561051657600080fd5b5061019c54610426906001600160a01b031681565b34801561053757600080fd5b50606554610426906001600160a01b031681565b34801561055757600080fd5b506102a9610566366004613251565b610ffe565b6102a961057936600461327f565b6111c4565b34801561058a57600080fd5b5061032d611279565b34801561059f57600080fd5b506103f96105ae36600461305a565b611327565b3480156105bf57600080fd5b50606654610426906001600160a01b031681565b3480156105df57600080fd5b506101305460ff16610274565b3480156105f857600080fd5b506102a961060736600461305a565b6114bb565b34801561061857600080fd5b5061042661062736600461305a565b61019b602052600090815260409020546001600160a01b031681565b34801561064f57600080fd5b5061042661065e366004613191565b61019a602052600090815260409020546001600160a01b031681565b34801561068657600080fd5b50610274610695366004613221565b611584565b3480156106a657600080fd5b506102a96106b53660046132d8565b6115af565b3480156106c657600080fd5b5061032d6106d536600461305a565b611669565b3480156106e657600080fd5b5061032d600081565b3480156106fb57600080fd5b5061032d6101965481565b34801561071257600080fd5b5061032d6101975481565b34801561072957600080fd5b506102a961073836600461305a565b611696565b34801561074957600080fd5b506102a961075836600461305a565b6117e8565b34801561076957600080fd5b5061027461077836600461305a565b611947565b34801561078957600080fd5b506102a961079836600461305a565b6119fe565b3480156107a957600080fd5b506102a96107b8366004613304565b611b32565b3480156107c957600080fd5b506102a96107d8366004613221565b611bd9565b3480156107e957600080fd5b506102a9611bf5565b3480156107fe57600080fd5b50610426611c2d565b34801561081357600080fd5b5061032d61082236600461305a565b611cba565b34801561083357600080fd5b5061032d60008051602061392483398151915281565b34801561085557600080fd5b506102a9610864366004613388565b611d6f565b34801561087557600080fd5b5061088961088436600461305a565b611dc4565b6040516102809594939291906133e7565b3480156108a657600080fd5b506102746108b536600461305a565b611e80565b3480156108c657600080fd5b506102a96108d5366004613191565b611ef3565b60006001600160e01b03198216637965db0b60e01b148061090b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061392483398151915261092981611f09565b811561093b57610937611f13565b5050565b610937611f68565b61094d81426115af565b50565b6000805160206138e483398151915261096881611f09565b610970611fa2565b6109378246611fe9565b6000805160206138e483398151915261099281611f09565b61099a611fa2565b6109a382612118565b6001600160a01b03821660008181526101996020526040808220600401805460ff191660ff179055517f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b8789679190a25050565b6000805160206138e4833981519152610a0c81611f09565b610a14611fa2565b610a1f8383466123ed565b505050565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aab9190613421565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b299190613421565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260fe602052604090206001015490565b6000805160206138e4833981519152610b7881611f09565b610b80611fa2565b61093782612118565b6000610b9481611f09565b6067546001600160a01b031615610be85760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b610bf18261248e565b606654610c09906000906001600160a01b03166124b1565b606654610c2e90600080516020613924833981519152906001600160a01b03166124b1565b606654610937906000805160206138e4833981519152906001600160a01b03166124b1565b6040518060800160405280604781526020016139646047913981565b6000610c7a82610eee565b15610c83575090565b6001600160a01b03808316600090815261019b6020526040902054610ca89116610eee565b15610ccd57506001600160a01b03908116600090815261019b60205260409020541690565b506000919050565b610cde82610b4b565b610ce781611f09565b610a1f83836124b7565b6001600160a01b0381163314610d615760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610bdf565b610937828261253d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610db35760405162461bcd60e51b8152600401610bdf9061343e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610de56125a4565b6001600160a01b031614610e0b5760405162461bcd60e51b8152600401610bdf90613478565b610e14816125c0565b6040805160008082526020820190925261094d918391906125c8565b6001600160a01b03818116600090815261019b602052604090205416331480610e615750336001600160a01b038216145b610e9c5760405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606401610bdf565b6001600160a01b038116600081815261019b602052604080822080546001600160a01b0319169055513392917f7cdef5f9c5cb8ce728661ede956fef26cb91eb4d7d2180cc041b73f9fef568d291a350565b6001600160a01b0381166000908152610199602052604081205481906201518090610f1990426134c8565b610f2391906134db565b9050610198548111158015610f5757506001600160a01b0383166000908152610199602052604090206004015460ff166001145b15610f655750600192915050565b61019c546001600160a01b031615610ff55761019c54604051633af32abf60e01b81526001600160a01b0390911690633af32abf90610fa890869060040161320d565b602060405180830381865afa925050508015610fe1575060408051601f3d908101601f19168201909252610fde918101906134fd565b60015b610fee5750600092915050565b9392505050565b50600092915050565b600054610100900460ff161580801561101e5750600054600160ff909116105b8061103f575061102d30612733565b15801561103f575060005460ff166001145b6110a25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bdf565b6000805460ff1916600117905580156110c5576000805461ff0019166101001790555b6110cd612742565b6110d5612769565b61111c604051806040016040528060088152602001674964656e7469747960c01b815250604051806040016040528060058152602001640312e302e360dc1b81525061279d565b6104476101985561112e6000846124b1565b611146600080516020613924833981519152846124b1565b61115e6000805160206138e4833981519152846124b1565b61019c80546001600160a01b0319166001600160a01b0384161790558015610a1f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361120c5760405162461bcd60e51b8152600401610bdf9061343e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661123e6125a4565b6001600160a01b0316146112645760405162461bcd60e51b8152600401610bdf90613478565b61126d826125c0565b610937828260016125c8565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113145760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610bdf565b5060008051602061394483398151915290565b6001600160a01b0381166000908152610199602052604090206002018054606091906113529061351a565b80601f016020809104026020016040519081016040528092919081815260200182805461137e9061351a565b80156113cb5780601f106113a0576101008083540402835291602001916113cb565b820191906000526020600020905b8154815290600101906020018083116113ae57829003601f168201915b50508351602080860191909120600081815261019a909252604090912054949550936001600160a01b03808816911603925061140a9150505750919050565b61019c546001600160a01b0316156114a55761019c546040516354f9f7a360e01b81526001600160a01b03909116906354f9f7a39061144d90869060040161320d565b600060405180830381865afa92505050801561148b57506040513d6000823e601f3d908101601f191682016040526114889190810190613554565b60015b610fee575050604080516020810190915260008152919050565b5050604080516020810190915260008152919050565b6000805160206138e48339815191526114d381611f09565b6114db611fa2565b813b6115295760405162461bcd60e51b815260206004820152601f60248201527f476976656e2061646472657373206973206e6f74206120636f6e7472616374006044820152606401610bdf565b6115338246611fe9565b6001600160a01b03821660008181526101996020526040808220600401805460ff19166002179055517f89c66952b48f3e96bf1d8ba1b63189520fd988a6979b8b740bd5c5d8dc53e2059190a25050565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206138e48339815191526115c781611f09565b6115cf611fa2565b6001600160a01b0383166000908152610199602052604090206004015460ff1660011461160e5760405162461bcd60e51b8152600401610bdf906135c1565b6001600160a01b0383166000818152610199602052604090819020849055517fb2a82fce6d8c7a633efe9579f77b4edb96bfdf171a49bfc2ce666dc543a1f5009061165c9085815260200190565b60405180910390a2505050565b6001600160a01b0381166000908152610199602052604090206003015480611691574661090b565b919050565b6000805160206138e48339815191526116ae81611f09565b6116b6611fa2565b61019c546001600160a01b03161580159061173e575061019c5460405163639e625760e11b81526001600160a01b039091169063c73cc4ae906116fd90859060040161320d565b602060405180830381865afa15801561171a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173e91906134fd565b156117a75761019c5460405163c375c2ef60e01b81526001600160a01b039091169063c375c2ef9061177490859060040161320d565b600060405180830381600087803b15801561178e57600080fd5b505af11580156117a2573d6000803e3d6000fd5b505050505b6117b082612118565b6040516001600160a01b038316907f8d30d41865a0b811b9545d879520d2dde9f4cc49e4241f486ad9752bc904b56590600090a25050565b6000805160206138e483398151915261180081611f09565b611808611fa2565b61019c546001600160a01b031615801590611890575061019c5460405163fe575a8760e01b81526001600160a01b039091169063fe575a879061184f90859060040161320d565b602060405180830381865afa15801561186c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189091906134fd565b156118f95761019c546040516363513b6160e11b81526001600160a01b039091169063c6a276c2906118c690859060040161320d565b600060405180830381600087803b1580156118e057600080fd5b505af11580156118f4573d6000803e3d6000fd5b505050505b6001600160a01b03821660008181526101996020526040808220600401805460ff19169055517f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde89190a25050565b6001600160a01b0381166000908152610199602052604081206004015460ff1660020361197657506001919050565b61019c546001600160a01b031615610ccd5761019c5460405163639e625760e11b81526001600160a01b039091169063c73cc4ae906119b990859060040161320d565b602060405180830381865afa9250505080156119f2575060408051601f3d908101601f191682019092526119ef918101906134fd565b60015b61090b57506000919050565b611a0733610eee565b611a235760405162461bcd60e51b8152600401610bdf906135c1565b611a2c81610eee565b158015611a3f5750611a3d81611e80565b155b611a7d5760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081858d8dbdd5b9d608a1b6044820152606401610bdf565b6001600160a01b03818116600090815261019b60205260409020541615611ada5760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb9b9958dd1959607a1b6044820152606401610bdf565b6001600160a01b038116600081815261019b602052604080822080546001600160a01b0319163390811790915590519092917f18f7736ef54539debd9afd3c9500b106e12ae7c70e685f5a5efd727b1ce1d54c91a350565b336001600160a01b0384161480611b5c5750611b5c6000805160206138e483398151915233611584565b611b995760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b6044820152606401610bdf565b610a1f8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127e092505050565b611be282610b4b565b611beb81611f09565b610a1f838361253d565b611bfd611fa2565b611c0633610eee565b611c225760405162461bcd60e51b8152600401610bdf906135c1565b611c2b33612118565b565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb59190613421565b905090565b6001600160a01b0381166000908152610199602052604081205415611cf657506001600160a01b03166000908152610199602052604090205490565b61019c546001600160a01b031615610ccd5761019c546040516370f1b05d60e11b81526001600160a01b039091169063e1e360ba90611d3990859060040161320d565b602060405180830381865afa9250505080156119f2575060408051601f3d908101601f191682019092526119ef918101906135ea565b6000805160206138e4833981519152611d8781611f09565b611d8f611fa2565b611d9a8585856123ed565b8115611dbd576001600160a01b0385166000908152610199602052604090208290555b5050505050565b6101996020526000908152604090208054600182015460028301805492939192611ded9061351a565b80601f0160208091040260200160405190810160405280929190818152602001828054611e199061351a565b8015611e665780601f10611e3b57610100808354040283529160200191611e66565b820191906000526020600020905b815481529060010190602001808311611e4957829003601f168201915b50505050600383015460049093015491929160ff16905085565b6001600160a01b0381166000908152610199602052604081206004015460ff9081169003611eb057506001919050565b61019c546001600160a01b031615610ccd5761019c5460405163fe575a8760e01b81526001600160a01b039091169063fe575a87906119b990859060040161320d565b611efb611fa2565b611f03612a60565b61019855565b61094d8133612b23565b611f1b611fa2565b610130805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f513390565b604051611f5e919061320d565b60405180910390a1565b611f70612b7c565b610130805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611f51565b6101305460ff1615611c2b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610bdf565b6001600160a01b0382166000908152610199602052604090206004015460ff161561204b5760405162461bcd60e51b8152602060048201526012602482015271616c7265616479206861732073746174757360701b6044820152606401610bdf565b6001610196600082825461205f9190613603565b90915550506001600160a01b03821660009081526101996020908152604080832060048101805460ff1916600190811790915542908201819055815560030184905561019b909152902080546001600160a01b03191690556120c1823b151590565b156120e057600161019760008282546120da9190613603565b90915550505b6040516001600160a01b038316907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a25050565b6001600160a01b0381166000908152610199602052604090206004015460ff166001148061216557506001600160a01b0381166000908152610199602052604090206004015460ff166002145b15612301576001610196600082825461217e91906134c8565b9091555050803b151580156121965750600061019754115b156121b557600161019760008282546121af91906134c8565b90915550505b6001600160a01b03811660009081526101996020526040812060020180546121dc9061351a565b80601f01602080910402602001604051908101604052809291908181526020018280546122089061351a565b80156122555780601f1061222a57610100808354040283529160200191612255565b820191906000526020600020905b81548152906001019060200180831161223857829003601f168201915b505083516020808601919091206001600160a01b03881660009081526101999092526040822082815560018101839055959650949350915061229c90506002830182612fa2565b506000600382018190556004909101805460ff1916905581815261019a602052604080822080546001600160a01b0319169055516001600160a01b038516917f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b691a250505b61019c546001600160a01b031615801590612389575061019c54604051633af32abf60e01b81526001600160a01b0390911690633af32abf9061234890849060040161320d565b602060405180830381865afa158015612365573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238991906134fd565b1561094d5761019c5460405163291d954960e01b81526001600160a01b039091169063291d9549906123bf90849060040161320d565b600060405180830381600087803b1580156123d957600080fd5b505af1158015611dbd573d6000803e3d6000fd5b8151602080840191909120600081815261019a9092526040909120546001600160a01b03161561242f5760405162461bcd60e51b8152600401610bdf90613616565b6001600160a01b0384166000908152610199602052604090206002016124558482613694565b50600081815261019a6020526040902080546001600160a01b0319166001600160a01b0386161790556124888483611fe9565b50505050565b606780546001600160a01b0319166001600160a01b03831617905561094d610a24565b61093782825b6124c18282611584565b61093757600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556124f93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6125478282611584565b1561093757600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020613944833981519152546001600160a01b031690565b61094d612a60565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156125fb57610a1f83612bc6565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612655575060408051601f3d908101601f19168201909252612652918101906135ea565b60015b6126b85760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bdf565b60008051602061394483398151915281146127275760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bdf565b50610a1f838383612c60565b6001600160a01b03163b151590565b600054610100900460ff16611c2b5760405162461bcd60e51b8152600401610bdf90613753565b600054610100900460ff166127905760405162461bcd60e51b8152600401610bdf90613753565b610130805460ff19169055565b600054610100900460ff166127c45760405162461bcd60e51b8152600401610bdf90613753565b8151602092830120815191909201206101629190915561016355565b6127e982610eee565b6128055760405162461bcd60e51b8152600401610bdf906135c1565b60008151116128425760405162461bcd60e51b815260206004820152600960248201526864696420656d70747960b81b6044820152606401610bdf565b8051602080830191909120600081815261019a9092526040909120546001600160a01b0316156128845760405162461bcd60e51b8152600401610bdf90613616565b61019c546001600160a01b0316156129b65761019c546040516367c7593760e01b8152600481018390526000916001600160a01b0316906367c7593790602401602060405180830381865afa9250505080156128fd575060408051601f3d908101601f191682019092526128fa91810190613421565b60015b156129055790505b6001600160a01b038116158061292c5750836001600160a01b0316816001600160a01b0316145b8061295d57506001600160a01b03811660009081526101996020526040812060020180546129599061351a565b9050115b6129b45760405162461bcd60e51b815260206004820152602260248201527f44494420616c72656164792072656769737465726564206f6c644964656e7469604482015261747960f01b6064820152608401610bdf565b505b6001600160a01b0383166000908152610199602052604080822090516129df916002019061379e565b6040805191829003909120600081815261019a602090815283822080546001600160a01b03191690556001600160a01b0388168252610199905291909120909150600201612a2d8482613694565b5050600090815261019a6020526040902080546001600160a01b0319166001600160a01b03939093169290921790915550565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa158015612aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612acd9190613421565b6001600160a01b031614611c2b5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610bdf565b612b2d8282611584565b61093757612b3a81612c85565b612b45836020612c97565b604051602001612b56929190613814565b60408051601f198184030181529082905262461bcd60e51b8252610bdf916004016131fa565b6101305460ff16611c2b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610bdf565b612bcf81612733565b612c315760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bdf565b60008051602061394483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612c6983612e32565b600082511180612c765750805b15610a1f576124888383612e72565b606061090b6001600160a01b03831660145b60606000612ca6836002613883565b612cb1906002613603565b6001600160401b03811115612cc857612cc8613077565b6040519080825280601f01601f191660200182016040528015612cf2576020820181803683370190505b509050600360fc1b81600081518110612d0d57612d0d61389a565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612d3c57612d3c61389a565b60200101906001600160f81b031916908160001a9053506000612d60846002613883565b612d6b906001613603565b90505b6001811115612de3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612d9f57612d9f61389a565b1a60f81b828281518110612db557612db561389a565b60200101906001600160f81b031916908160001a90535060049490941c93612ddc816138b0565b9050612d6e565b508315610fee5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bdf565b612e3b81612bc6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612e7d83612733565b612ed85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610bdf565b600080846001600160a01b031684604051612ef391906138c7565b600060405180830381855af49150503d8060008114612f2e576040519150601f19603f3d011682016040523d82523d6000602084013e612f33565b606091505b5091509150612f5b82826040518060600160405280602781526020016139ab60279139612f64565b95945050505050565b60608315612f73575081610fee565b610fee8383815115612f885781518083602001fd5b8060405162461bcd60e51b8152600401610bdf91906131fa565b508054612fae9061351a565b6000825580601f10612fbe575050565b601f01602090049060005260206000209081019061094d91905b80821115612fec5760008155600101612fd8565b5090565b60006020828403121561300257600080fd5b81356001600160e01b031981168114610fee57600080fd5b801515811461094d57600080fd5b60006020828403121561303a57600080fd5b8135610fee8161301a565b6001600160a01b038116811461094d57600080fd5b60006020828403121561306c57600080fd5b8135610fee81613045565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156130b5576130b5613077565b604052919050565b60006001600160401b038211156130d6576130d6613077565b50601f01601f191660200190565b60006130f76130f2846130bd565b61308d565b905082815283838301111561310b57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261313357600080fd5b610fee838335602085016130e4565b6000806040838503121561315557600080fd5b823561316081613045565b915060208301356001600160401b0381111561317b57600080fd5b61318785828601613122565b9150509250929050565b6000602082840312156131a357600080fd5b5035919050565b60005b838110156131c55781810151838201526020016131ad565b50506000910152565b600081518084526131e68160208601602086016131aa565b601f01601f19169290920160200192915050565b602081526000610fee60208301846131ce565b6001600160a01b0391909116815260200190565b6000806040838503121561323457600080fd5b82359150602083013561324681613045565b809150509250929050565b6000806040838503121561326457600080fd5b823561326f81613045565b9150602083013561324681613045565b6000806040838503121561329257600080fd5b823561329d81613045565b915060208301356001600160401b038111156132b857600080fd5b8301601f810185136132c957600080fd5b613187858235602084016130e4565b600080604083850312156132eb57600080fd5b82356132f681613045565b946020939093013593505050565b60008060006040848603121561331957600080fd5b833561332481613045565b925060208401356001600160401b038082111561334057600080fd5b818601915086601f83011261335457600080fd5b81358181111561336357600080fd5b87602082850101111561337557600080fd5b6020830194508093505050509250925092565b6000806000806080858703121561339e57600080fd5b84356133a981613045565b935060208501356001600160401b038111156133c457600080fd5b6133d087828801613122565b949794965050505060408301359260600135919050565b85815284602082015260a06040820152600061340660a08301866131ce565b905083606