345 txs
13.7k calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
getAddressEntry
viewfunction getAddressEntry(address _setter, string _name, string _entry) view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getIntEntry
viewfunction getIntEntry(address _setter, string _name, string _entry) view returns (int256)
getName
viewfunction getName(string _name) view returns (tuple)
getNameAddressRecord
viewfunction getNameAddressRecord(string _name, string _record) view returns (tuple)
getNameAddressRecordsList
viewfunction getNameAddressRecordsList(string _name) view returns (string[])
getNameAddressRecordsListPaginated
viewfunction getNameAddressRecordsListPaginated(string _name, uint256 _offset, uint256 _limit) view returns (string[])
getNameController
viewfunction getNameController(string _name) view returns (address)
getNameExpiration
viewfunction getNameExpiration(string _name) view returns (uint256)
getNameIntRecord
viewfunction getNameIntRecord(string _name, string _record) view returns (tuple)
getNameIntRecordsList
viewfunction getNameIntRecordsList(string _name) view returns (string[])
getNameIntRecordsListPaginated
viewfunction getNameIntRecordsListPaginated(string _name, uint256 _offset, uint256 _limit) view returns (string[])
getNameOwner
viewfunction getNameOwner(string _name) view returns (address)
getNameStringRecord
viewfunction getNameStringRecord(string _name, string _record) view returns (tuple)
getNameStringRecordsList
viewfunction getNameStringRecordsList(string _name) view returns (string[])
getNameStringRecordsListPaginated
viewfunction getNameStringRecordsListPaginated(string _name, uint256 _offset, uint256 _limit) view returns (string[])
getNameTokenId
viewfunction getNameTokenId(string _name) view returns (uint256)
getNameUintRecord
viewfunction getNameUintRecord(string _name, string _record) view returns (tuple)
getNameUintRecordsList
viewfunction getNameUintRecordsList(string _name) view returns (string[])
getNameUintRecordsListPaginated
viewfunction getNameUintRecordsListPaginated(string _name, uint256 _offset, uint256 _limit) view returns (string[])
getStringEntry
viewfunction getStringEntry(address _setter, string _name, string _entry) view returns (string)
getTokenName
viewfunction getTokenName(uint256 _tokenId) view returns (string)
getUintEntry
viewfunction getUintEntry(address _setter, string _name, string _entry) view returns (uint256)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
name
viewfunction name() view returns (string)
nameAvailable
viewfunction nameAvailable(string _name) view returns (bool)
nameExists
viewfunction nameExists(string _name) view returns (bool)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
wrldNames
viewfunction wrldNames(uint256) view returns (string name, address controller, uint256 expiresAt)
approve
nonpayablefunction approve(address to, uint256 tokenId)
extendRegistration
nonpayablefunction extendRegistration(string[] _names, uint16[] _additionalYears)
migrate
nonpayablefunction migrate(string _name, uint256 _networkFlags)
register
nonpayablefunction register(address _registerer, string[] _names, uint16[] _registrationYears)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes _data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setAddressEntry
nonpayablefunction setAddressEntry(string _name, string _entry, address _value)
setAddressRecord
nonpayablefunction setAddressRecord(string _name, string _record, address _value, uint256 _ttl)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setApprovedRegistrar
nonpayablefunction setApprovedRegistrar(address _approvedRegistrar, bool _approved)
setApprovedWithdrawer
nonpayablefunction setApprovedWithdrawer(address _approvedWithdrawer)
setBridgeContract
nonpayablefunction setBridgeContract(address _bridge)
setController
nonpayablefunction setController(string _name, address _controller)
setIntEntry
nonpayablefunction setIntEntry(string _name, string _entry, int256 _value)
setIntRecord
nonpayablefunction setIntRecord(string _name, string _record, int256 _value, uint256 _ttl)
setMetadataContract
nonpayablefunction setMetadataContract(address _metadata)
setResolverContract
nonpayablefunction setResolverContract(address _resolver)
setStringEntry
nonpayablefunction setStringEntry(string _name, string _entry, string _value)
setStringRecord
nonpayablefunction setStringRecord(string _name, string _record, string _value, string _typeOf, uint256 _ttl)
setUintEntry
nonpayablefunction setUintEntry(string _name, string _entry, uint256 _value)
setUintRecord
nonpayablefunction setUintRecord(string _name, string _record, uint256 _value, uint256 _ttl)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
NameControllerUpdated
event NameControllerUpdated(string indexed idxName, string name, address controller)
NameRegistered
event NameRegistered(string indexed idxName, string name, uint16 registrationYears)
NameRegistrationExtended
event NameRegistrationExtended(string indexed idxName, string name, uint16 additionalYears)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ResolverAddressEntryUpdated
event ResolverAddressEntryUpdated(address indexed setter, string indexed idxName, string indexed idxEntry, string name, string entry, address value)
ResolverAddressRecordUpdated
event ResolverAddressRecordUpdated(string indexed idxName, string name, string record, address value, uint256 ttl, address resolver)
ResolverIntEntryUpdated
event ResolverIntEntryUpdated(address indexed setter, string indexed idxName, string indexed idxEntry, string name, string entry, int256 value)
ResolverIntRecordUpdated
event ResolverIntRecordUpdated(string indexed idxName, string name, string record, int256 value, uint256 ttl, address resolver)
ResolverStringEntryUpdated
event ResolverStringEntryUpdated(address indexed setter, string indexed idxName, string indexed idxEntry, string name, string entry, string value)
ResolverStringRecordUpdated
event ResolverStringRecordUpdated(string indexed idxName, string name, string record, string value, string typeOf, uint256 ttl, address resolver)
ResolverUintEntryUpdated
event ResolverUintEntryUpdated(address indexed setter, string indexed idxName, string indexed idxEntry, string name, string entry, uint256 value)
ResolverUintRecordUpdated
event ResolverUintRecordUpdated(string indexed idxName, string name, string record, uint256 value, uint256 ttl, address resolver)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b50604080518082018252601181527057524c44204e616d65205365727669636560781b602080830191825283518085019094526003845262574e5360e81b9084015281519192916200006691600091620000fa565b5080516200007c906001906020840190620000fa565b5050506200009962000093620000a460201b60201c565b620000a8565b6001600755620001dd565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010890620001a0565b90600052602060002090601f0160209004810192826200012c576000855562000177565b82601f106200014757805160ff191683800117855562000177565b8280016001018555821562000177579182015b82811115620001775782518255916020019190600101906200015a565b506200018592915062000189565b5090565b5b808211156200018557600081556001016200018a565b600181811c90821680620001b557607f821691505b60208210811415620001d757634e487b7160e01b600052602260045260246000fd5b50919050565b615c9280620001ed6000396000f3fe608060405234801561001057600080fd5b506004361061038d5760003560e01c8063811e8fa3116101de578063bf4254881161010f578063e068d50a116100ad578063e985e9c51161007c578063e985e9c514610823578063eac244c41461085f578063f2fde38b1461087f578063ffa82fa31461089257600080fd5b8063e068d50a146107c8578063e3b5f188146107db578063e5187f43146107fd578063e9061d321461081057600080fd5b8063cf3a343a116100e9578063cf3a343a1461077c578063dbe16c071461078f578063dd4579e2146107a2578063ddba7154146107b557600080fd5b8063bf42548814610743578063c87b56dd14610756578063cc637afe1461076957600080fd5b806396ab93cb1161017c578063ae31ca7011610156578063ae31ca70146106f7578063b2c0ede81461070a578063b33d30151461071d578063b88d4fde1461073057600080fd5b806396ab93cb146106a3578063a22cb465146106d1578063a77a2717146106e457600080fd5b806387b80ba0116101b857806387b80ba01461066457806389d468dd146106775780638da5cb5b1461068a57806395d89b411461069b57600080fd5b8063811e8fa31461062b57806382bbdbec1461063e57806387119f101461065157600080fd5b80633e08e41e116102c35780636352211e1161026157806370a082311161023057806370a08231146105ea578063715018a6146105fd578063751e2e31146106055780637fa578f21461061857600080fd5b80636352211e1461059157806367ef0004146105a45780636932cf81146105b75780636b83c69d146105d757600080fd5b80634a9f0d2d1161029d5780634a9f0d2d1461054557806352f0a1e01461055857806359b76a1c1461056b5780635ab48c651461057e57600080fd5b80633e08e41e1461050c578063400c59af1461051f57806342842e0e1461053257600080fd5b8063213b9cf61161033057806324efba671161030a57806324efba67146104b257806327b972f9146104c557806338c80a79146104d85780633948596b146104f957600080fd5b8063213b9cf61461047957806322efa0e21461048c57806323b872dd1461049f57600080fd5b8063081812fc1161036c578063081812fc14610406578063095ea7b3146104315780630b26cf66146104465780630fe916711461045957600080fd5b80627e71e91461039257806301ffc9a7146103ce57806306fdde03146103f1575b600080fd5b6103a56103a0366004614c33565b6108a5565b6040805182516001600160a01b0316815260209283015192810192909252015b60405180910390f35b6103e16103dc366004614ae9565b61094e565b60405190151581526020016103c5565b6103f96109a0565b6040516103c59190615524565b61041961041436600461512d565b610a32565b6040516001600160a01b0390911681526020016103c5565b61044461043f366004614919565b610acc565b005b610444610454366004614671565b610be2565b61046c610467366004614b88565b610d2b565b6040516103c5919061548f565b610444610487366004614d72565b610dc5565b61046c61049a366004614b88565b610fa9565b6104446104ad3660046146e1565b610fe6565b6104446104c0366004614f3c565b61106d565b6104196104d3366004614b88565b61124c565b6104eb6104e63660046148a3565b611281565b6040519081526020016103c5565b610419610507366004614b88565b61131e565b61044461051a366004614d72565b611373565b61046c61052d366004614b39565b61151b565b6104446105403660046146e1565b6115b1565b6104eb610553366004614b88565b6115cc565b61046c610566366004614b39565b611617565b6104eb6105793660046148a3565b61164e565b61044461058c366004614fb7565b611691565b61041961059f36600461512d565b6117e5565b61046c6105b2366004614b39565b611870565b6105ca6105c5366004614b88565b6118a7565b6040516103c591906159d8565b6104446105e5366004614d05565b6119d3565b6104eb6105f8366004614671565b611b40565b610444611bda565b6104eb610613366004614b88565b611c40565b610444610626366004614671565b611c75565b610444610639366004614671565b611dbe565b6103e161064c366004614b88565b611e3a565b61044461065f366004614e7b565b611e6a565b610444610672366004614bee565b612064565b610444610685366004614c8c565b6121e9565b6006546001600160a01b0316610419565b6103f961231c565b6106b66106b1366004614c33565b61232b565b604080518251815260209283015192810192909252016103c5565b6104446106df366004614876565b6123cd565b61046c6106f2366004614b39565b6123dc565b6104196107053660046148a3565b612413565b6104446107183660046149f5565b6124a6565b61044461072b366004614dea565b612827565b61044461073e366004614721565b612960565b610444610751366004614d05565b6129ee565b6103f961076436600461512d565b612b21565b6103e1610777366004614b88565b612c45565b61046c61078a366004614b88565b612c7c565b6103f961079d36600461512d565b612cb9565b6103f96107b03660046148a3565b612d5b565b6104446107c336600461479e565b612df2565b61046c6107d6366004614b88565b6131de565b6107ee6107e936600461512d565b61321b565b6040516103c593929190615562565b61044461080b366004614671565b6132cf565b61044461081e366004614876565b613418565b6103e16108313660046146a9565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61087261086d366004614c33565b61349d565b6040516103c59190615988565b61044461088d366004614671565b613554565b6106b66108a0366004614c33565b613636565b6040805180820190915260008082526020820152836108c3816136a2565b600954604051627e71e960e01b81529192506001600160a01b031690627e71e9906108f690889088908890600401615590565b604080518083038186803b15801561090d57600080fd5b505afa158015610921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109459190614ffa565b95945050505050565b60006001600160e01b031982166380ac58cd60e01b148061097f57506001600160e01b03198216635b5e139f60e01b145b8061099a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546109af90615ba7565b80601f01602080910402602001604051908101604052809291908181526020018280546109db90615ba7565b8015610a285780601f106109fd57610100808354040283529160200191610a28565b820191906000526020600020905b815481529060010190602001808311610a0b57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610ab05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610ad7826117e5565b9050806001600160a01b0316836001600160a01b03161415610b455760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610aa7565b336001600160a01b0382161480610b615750610b618133610831565b610bd35760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610aa7565b610bdd8383613a7b565b505050565b6006546001600160a01b03163314610c3c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aa7565b6040516301ffc9a760e01b815263712e654960e01b600482015281906001600160a01b038216906301ffc9a79060240160206040518083038186803b158015610c8457600080fd5b505afa158015610c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbc9190614acd565b610d085760405162461bcd60e51b815260206004820152601760248201527f496e76616c69642062726964676520636f6e74726163740000000000000000006044820152606401610aa7565b600a80546001600160a01b0319166001600160a01b039290921691909117905550565b606081610d37816136a2565b600954604051630fe9167160e01b81529192506001600160a01b031690630fe9167190610d68908690600401615524565b60006040518083038186803b158015610d8057600080fd5b505afa158015610d94573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dbc9190810190614944565b91505b50919050565b84610dcf816136a2565b90508533610ddc8261124c565b6001600160a01b03161480610e01575033610df68261131e565b6001600160a01b0316145b610e575760405162461bcd60e51b815260206004820152602160248201527f53656e646572206973206e6f74206f776e6572206f7220636f6e74726f6c6c656044820152603960f91b6064820152608401610aa7565b60095460405163109dce7b60e11b81526001600160a01b039091169063213b9cf690610e8f908a908a908a908a908a9060040161562f565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b5050505086604051610ecf9190615275565b60405190819003812060095490917f1bec402a79e3e5ba9722a180a59916708845618a62e62cf58b24bc067e1080ea91610f1c918b918b918b918b918b916001600160a01b03169061566a565b60405180910390a2600a546001600160a01b031615610fa057600a5460405163109dce7b60e11b81526001600160a01b039091169063213b9cf690610f6d908a908a908a908a908a9060040161562f565b600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b505050505b50505050505050565b606081610fb5816136a2565b600954604051631177d07160e11b81529192506001600160a01b0316906322efa0e290610d68908690600401615524565b610ff03382613ae9565b6110625760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610aa7565b610bdd838383613bdf565b83611077816136a2565b905084336110848261124c565b6001600160a01b031614806110a957503361109e8261131e565b6001600160a01b0316145b6110ff5760405162461bcd60e51b815260206004820152602160248201527f53656e646572206973206e6f74206f776e6572206f7220636f6e74726f6c6c656044820152603960f91b6064820152608401610aa7565b6009546040516324efba6760e01b81526001600160a01b03909116906324efba67906111359089908990899089906004016157db565b600060405180830381600087803b15801561114f57600080fd5b505af1158015611163573d6000803e3d6000fd5b50505050856040516111759190615275565b60405190819003812060095490917fd84638eecf3ca98484678c489ae80b333ee3f3af59b03949c41a361766d632b0916111c2918a918a918a918a916001600160a01b039091169061581d565b60405180910390a2600a546001600160a01b03161561124457600a546040516324efba6760e01b81526001600160a01b03909116906324efba67906112119089908990899089906004016157db565b600060405180830381600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050505b505050505050565b600081611258816136a2565b9050610dbc600c8460405161126d9190615275565b9081526020016040518091039020546117e5565b60008361128d816136a2565b6009546040516338c80a7960e01b81529192506001600160a01b0316906338c80a79906112c4908990899089908990600401615364565b60206040518083038186803b1580156112dc57600080fd5b505afa1580156112f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113149190614b21565b9695505050505050565b60008161132a816136a2565b9050600b6000600c856040516113409190615275565b90815260408051602092819003830190205483529082019290925201600020600101546001600160a01b03169392505050565b8461137d816136a2565b9050853361138a8261124c565b6001600160a01b031614806113af5750336113a48261131e565b6001600160a01b0316145b6114055760405162461bcd60e51b815260206004820152602160248201527f53656e646572206973206e6f74206f776e6572206f7220636f6e74726f6c6c656044820152603960f91b6064820152608401610aa7565b600954604051631f04720f60e11b81526001600160a01b0390911690633e08e41e9061143d908a908a908a908a908a9060040161562f565b600060405180830381600087803b15801561145757600080fd5b505af115801561146b573d6000803e3d6000fd5b505050508660405161147d9190615275565b60405190819003812060095490917f1e4169e72873acec168814bb2ebc431755b14d6f3dd9e0aa61cae83a06ac1db9916114ca918b918b918b918b918b916001600160a01b03169061566a565b60405180910390a2600a546001600160a01b031615610fa057600a54604051631f04720f60e11b81526001600160a01b0390911690633e08e41e90610f6d908a908a908a908a908a9060040161562f565b60095460405163400c59af60e01b81526060916001600160a01b03169063400c59af906115529088908890889088906004016154fd565b60006040518083038186803b15801561156a57600080fd5b505afa15801561157e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115a69190810190614944565b90505b949350505050565b610bdd83838360405180602001604052806000815250612960565b6000816115d8816136a2565b9050600b6000600c856040516115ee9190615275565b908152602001604051809103902054815260200190815260200160002060020154915050919050565b600954604051630297850f60e51b81526060916001600160a01b0316906352f0a1e0906115529088908890889088906004016154fd565b60008361165a816136a2565b60095460405163166dda8760e21b81529192506001600160a01b0316906359b76a1c906112c4908990899089908990600401615364565b8161169b816136a2565b905082336116a88261124c565b6001600160a01b031614806116cd5750336116c28261131e565b6001600160a01b0316145b6117235760405162461bcd60e51b815260206004820152602160248201527f53656e646572206973206e6f74206f776e6572206f7220636f6e74726f6c6c656044820152603960f91b6064820152608401610aa7565b600a546001600160a01b031661177b5760405162461bcd60e51b815260206004820152600e60248201527f427269646765206e6f74207365740000000000000000000000000000000000006044820152606401610aa7565b600a54604051635ab48c6560e01b81526001600160a01b0390911690635ab48c65906117ad9087908790600401615893565b600060405180830381600087803b1580156117c757600080fd5b505af11580156117db573d6000803e3d6000fd5b5050505050505050565b6000818152600260205260408120546001600160a01b03168061099a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610aa7565b6009546040516319fbc00160e21b81526060916001600160a01b0316906367ef0004906115529088908890889088906004016154fd565b6118d460405180606001604052806060815260200160006001600160a01b03168152602001600081525090565b816118de816136a2565b9050600b6000600c856040516118f49190615275565b908152602001604051809103902054815260200190815260200160002060405180606001604052908160008201805461192c90615ba7565b80601f016020809104026020016040519081016040528092919081815260200182805461195890615ba7565b80156119a55780601f1061197a576101008083540402835291602001916119a5565b820191906000526020600020905b81548152906001019060200180831161198857829003601f168201915b505050918352505060018201546001600160a01b031660208201526002909101546040909101529392505050565b836119dd816136a2565b6009546040516311cfd92560e31b81529192506001600160a01b031690638e7ec92890611a1690339089908990899089906004016153f0565b600060405180830381600087803b158015611a3057600080fd5b505af1158015611a44573d6000803e3d6000fd5b505050508383604051611a58929190615265565b604051809103902085604051611a6e9190615275565b6040518091039020336001600160a01b03167f1c5809804e8ec7822224dbb3218409a2d91fb4b4bf7c9e9b4c24c0a7ca8a074388888888604051611ab594939291906155f7565b60405180910390a4600a546001600160a01b031615611b3957600a546040516311cfd92560e31b81526001600160a01b0390911690638e7ec92890611b0690339089908990899089906004016153f0565b600060405180830381600087803b158015611b2057600080fd5b505af1158015611b34573d6000803e3d6000fd5b505050505b5050505050565b60006001600160a01b038216611bbe5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610aa7565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314611c345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aa7565b611c3e6000613d9e565b565b600081611c4c816136a2565b9050600c83604051611c5e9190615275565b908152602001604051809103902054915050919050565b6006546001600160a01b03163314611ccf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aa7565b6040516301ffc9a760e01b8152638a10f50f60e01b600482015281906001600160a01b038216906301ffc9a79060240160206040518083038186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4f9190614acd565b611d9b5760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964207265736f6c76657220636f6e7472616374000000000000006044820152606401610aa7565b600980546001600160a01b0319166001600160a01b039290921691909117905550565b6006546001600160a01b03163314611e185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aa7565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600081611e46816136a2565b9050611e5183612c45565b1580610dbc575042611e62846115cc565b109392505050565b87611e74816136a2565b90508833611e818261124c565b6001600160a01b03161480611ea6575033611e9b8261131e565b6001600160a01b0316145b611efc5760405162461bcd60e51b815260206004820152602160248201527f53656e646572206973206e6f74206f776e6572206f7220636f6e74726f6c6c656044820152603960f91b6064820152608401610aa7565b60095460405163087119f160e41b81526001600160a01b03909116906387119f1090611f3a908d908d908d908d908d908d908d908d906004016156ff565b600060405180830381600087803b158015611f5457600080fd5b505af1158015611f68573d6000803e3d6000fd5b5050505089604051611f7a9190615275565b60405190819003812060095490917f94827a2b540aea0c54011f4d0fee2d17ba05efc6f8619ffbe46c5a35d6b4ab5b91611fcf918e918e918e918e918e918e918e918e916001600160a01b0390911690615765565b60405180910390a2600a546001600160a01b03161561123f57600a5460405163087119f160e41b81526001600160a01b03909116906387119f1090612026908d908d908d908d908d908d908d908d906004016156ff565b600060405180830381600087803b15801561204057600080fd5b505af1158015612054573d6000803e3d6000fd5b5050505050505050505050505050565b8161206e816136a2565b90503361207a8461124c565b6001600160a01b0316146120d05760405162461bcd60e51b815260206004820152601360248201527f53656e646572206973206e6f74206f776e6572000000000000000000000000006044820152606401610aa7565b81600b6000600c866040516120e59190615275565b908152602001604051809103902054815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826040516121379190615275565b60405180910390207fbdc91bd202148dd8bf98f4b893b460b33190139b9d53f168ad9a60ff22f003a38484604051612170929190615537565b60405180910390a2600a546001600160a01b031615610bdd57600a5460405163043dc05d60e51b81526001600160a01b03909116906387b80ba0906121bb9086908690600401615537565b600060405180830381600087803b1580156121d557600080fd5b505af1158015610fa0573d6000803e3d6000fd5b836121f3816136a2565b600954604051633cbef0b160e21b81529192506001600160a01b03169063f2fbc2c49061222c90339089908990899089906004016153a4565b600060405180830381600087803b15801561224657600080fd5b505af115801561225a573d6000803e3d6000fd5b50505050838360405161226e929190615265565b6040518091039020856040516122849190615275565b6040518091039020336001600160a01b03167f27249d883229930956bcfaacc85b241c9aaad3b007b5a945595f16cfbca387a4888888886040516122cb94939291906155b6565b60405180910390a4600a546001600160a01b031615611b3957600a54604051633cbef0b160e21b81526001600160a01b039091169063f2fbc2c490611b0690339089908990899089906004016153a4565b6060600180546109af90615ba7565b604080518082019091526000808252602082015283612349816136a2565b6009546040516396ab93cb60e01b81529192506001600160a01b0316906396ab93cb9061237e90889088908890600401615590565b604080518083038186803b15801561239557600080fd5b505afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109459190615033565b6123d8338383613df0565b5050565b60095460405163a77a271760e01b81526060916001600160a01b03169063a77a2717906115529088908890889088906004016154fd565b60008361241f816136a2565b600954604051630ae31ca760e41b81529192506001600160a01b03169063ae31ca7090612456908990899089908990600401615364565b60206040518083038186803b15801561246e57600080fd5b505afa158015612482573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611314919061468d565b336000908152600e602052604090205460ff166125055760405162461bcd60e51b815260206004820152601b60248201527f6d73672073656e646572206973206e6f742072656769737472617200000000006044820152606401610aa7565b825181146125555760405162461bcd60e51b815260206004820152601360248201527f4172672073697a65206d69736d617463686564000000000000000000000000006044820152606401610aa7565b60005b83518110156127e157600083838381811061258357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906125989190615113565b61ffff16116125e95760405162461bcd60e51b815260206004820152601f60248201527f5965617273206d7573742062652067726561746572207468616e207a65726f006044820152606401610aa7565b61261984828151811061260c57634e487b7160e01b600052603260045260246000fd5b60200260200101516136a2565b84828151811061263957634e487b7160e01b600052603260045260246000fd5b60200260200101819052506000600b6000600c87858151811061266c57634e487b7160e01b600052603260045260246000fd5b60200260200101516040516126819190615275565b908152602001604051809103902054815260200190815260200160002090508383838181106126c057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906126d59190615113565b6126e79061ffff166301e187e0615b45565b81600201546126f69190615b08565b6002820155845185908390811061271d57634e487b7160e01b600052603260045260246000fd5b60200260200101516040516127329190615275565b60405180910390207f9fd7e9c5e4be42c7dd1f50cc91990897eb6a8906242cd6df7fd2d6974bcf0ba886848151811061277b57634e487b7160e01b600052603260045260246000fd5b60200260200101518686868181106127a357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906127b89190615113565b6040516127c692919061586d565b60405180910390a250806127d981615bdc565b915050612558565b50600a546001600160a01b031615610bdd57600a546040516316581dbd60e31b81526001600160a01b039091169063b2c0ede8906121bb908690869086906004016154a2565b84612831816136a2565b60095460405163b9826f0760e01b81529192506001600160a01b03169063b9826f079061286c9033908a908a908a908a908a90600401615438565b600060405180830381600087803b15801561288657600080fd5b505af115801561289a573d6000803e3d6000fd5b5050505084846040516128ae929190615265565b6040518091039020866040516128c49190615275565b6040518091039020336001600160a01b03167f99349cd0d9c0669e3cac3f3bc750dcec1fc215a981efc50139f7f5bdbbcc697d898989898960405161290d9594939291906156b8565b60405180910390a4600a546001600160a01b03161561124457600a5460405163b9826f0760e01b81526001600160a01b039091169063b9826f07906112119033908a908a908a908a908a90600401615438565b61296a3383613ae9565b6129dc5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610aa7565b6129e884848484613ebf565b50505050565b836129f8816136a2565b6009546040516359298f1b60e11b81529192506001600160a01b03169063b2531e3690612a3190339089908990899089906004016153f0565b600060405180830381600087803b158015612a4b57600080fd5b505af1158015612a5f573d6000803e3d6000fd5b505050508383604051612a73929190615265565b604051809103902085604051612a899190615275565b6040518091039020336001600160a01b03167fff393a9ec6701667cde7c810673c30b7fd3e6a9c78dae9623670dfb88834d9fe88888888604051612ad094939291906155f7565b60405180910390a4600a546001600160a01b031615611b3957600a546040516359298f1b60e11b81526001600160a01b039091169063b2531e3690611b0690339089908990899089906004016153f0565b6000818152600260205260409020546060906001600160a01b0316612bae5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610aa7565b6008546000838152600b6020526040908190206002810154915163a327dceb60e01b81526001600160a01b039093169263a327dceb92612bf19291600401615975565b60006040518083038186803b158015612c0957600080fd5b505afa158015612c1d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261099a9190810190614bbb565b600081612c51816136a2565b9050600c83604051612c639190615275565b9081526040519081900360200190205415159392505050565b606081612c88816136a2565b60095460405163679d1a1d60e11b81529192506001600160a01b03169063cf3a343a90610d68908690600401615524565b6000818152600b60205260409020805460609190612cd690615ba7565b80601f0160208091040260200160405190810160405280929190818152602001828054612d0290615ba7565b8015612d4f5780601f10612d2457610100808354040283529160200191612d4f565b820191906000526020600020905b815481529060010190602001808311612d3257829003601f168201915b50505050509050919050565b606083612d67816136a2565b600954604051636ea2bcf160e11b81529192506001600160a01b03169063dd4579e290612d9e908990899089908990600401615364565b60006040518083038186803b158015612db657600080fd5b505afa158015612dca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113149190810190614bbb565b336000908152600e602052604090205460ff16612e515760405162461bcd60e51b815260206004820152601b60248201527f6d73672073656e646572206973206e6f742072656769737472617200000000006044820152606401610aa7565b80518214612ea15760405162461bcd60e51b815260206004820152601360248201527f4172672073697a65206d69736d617463686564000000000000000000000000006044820152606401610aa7565b60005b82811015611b39576000828281518110612ece57634e487b7160e01b600052603260045260246000fd5b602002602001015161ffff16118015612f1357506064828281518110612f0457634e487b7160e01b600052603260045260246000fd5b602002602001015161ffff1611155b612f5f5760405162461bcd60e51b815260206004820152601f60248201527f5965617273206d757374206265206265747765656e203120616e6420313030006044820152606401610aa7565b6000612fd0858584818110612f8457634e487b7160e01b600052603260045260246000fd5b9050602002810190612f969190615a1d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136a292505050565b90506000838381518110612ff457634e487b7160e01b600052603260045260246000fd5b602002602001015161ffff166301e187e061300f9190615b45565b6130199042615b08565b825160208401209091506000906001600160a01b03166000818152600260205260409020549091506001600160a01b0316156130b8576000818152600b602052604090206002015442116130af5760405162461bcd60e51b815260206004820152601060248201527f556e617661696c61626c65206e616d65000000000000000000000000000000006044820152606401610aa7565b6130b881613f3d565b6040805160608101825284815260006020808301829052828401869052848252600b815292902081518051929391926130f49284920190614490565b5060208201516001820180546001600160a01b0319166001600160a01b03909216919091179055604091820151600290910155518190600c90613138908690615275565b908152604051908190036020019020556131528882613fe4565b826040516131609190615275565b60405180910390207f2fb5ac1cbb0c9d67ebb490ffc5b75943eedc07f01741991b5cfa673676853693848787815181106131aa57634e487b7160e01b600052603260045260246000fd5b60200260200101516040516131c092919061586d565b60405180910390a250505080806131d690615bdc565b915050612ea4565b6060816131ea816136a2565b6009546040516370346a8560e11b81529192506001600160a01b03169063e068d50a90610d68908690600401615524565b600b6020526000908152604090208054819061323690615ba7565b80601f016020809104026020016040519081016040528092919081815260200182805461326290615ba7565b80156132af5780601f10613284576101008083540402835291602001916132af565b820191906000526020600020905b81548152906001019060200180831161329257829003601f168201915b50505050600183015460029093015491926001600160a01b031691905083565b6006546001600160a01b031633146133295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aa7565b6040516301ffc9a760e01b81526315a7af0b60e21b600482015281906001600160a01b038216906301ffc9a79060240160206040518083038186803b15801561337157600080fd5b505afa158015613385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a99190614acd565b6133f55760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206d6574616461746120636f6e7472616374000000000000006044820152606401610aa7565b600880546001600160a01b0319166001600160a01b039290921691909117905550565b6006546001600160a01b031633146134725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aa7565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6134c160405180606001604052806060815260200160608152602001600081525090565b836134cb816136a2565b600954604051633ab0913160e21b81529192506001600160a01b03169063eac244c49061350090889088908890600401615590565b60006040518083038186803b15801561351857600080fd5b505afa15801561352c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109459190810190615064565b6006546001600160a01b031633146135ae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aa7565b6001600160a01b03811661362a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610aa7565b61363381613d9e565b50565b604080518082019091526000808252602082015283613654816136a2565b6009546040517fffa82fa30000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063ffa82fa39061237e90889088908890600401615590565b80516060906000908190818581836136ca57634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b0319169050602d60f81b8114806136fa5750605f60f81b6001600160f81b03198216145b806137125750603f60f91b6001600160f81b03198216145b156137515760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a590818da185c9cd95d608a1b6044820152606401610aa7565b600093505b81831015613a7157600086848151811061378057634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b0319169050600160ff1b8110156139cc57602d60f81b6001600160f81b0319821610806137c65750601760f91b6001600160f81b03198216145b806137de5750602f60f81b6001600160f81b03198216145b806138105750601d60f91b6001600160f81b03198216108015906138105750600160fe1b6001600160f81b0319821611155b806138285750605b60f81b6001600160f81b03198216145b806138405750601760fa1b6001600160f81b03198216145b806138585750605d60f81b6001600160f81b03198216145b806138705750602f60f91b6001600160f81b03198216145b806138885750600360fd1b6001600160f81b03198216145b806138a05750607b60f81b6001600160f81b03198216145b806138b85750601f60fa1b6001600160f81b03198216145b806138d05750607d60f81b6001600160f81b03198216145b806138e85750607f60f81b6001600160f81b03198216145b156139275760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a590818da185c9cd95d608a1b6044820152606401610aa7565b604160f81b6001600160f81b03198216108015906139535750602d60f91b6001600160f81b0319821611155b156139ba5761396760f882901c6020615b20565b60f81b87858151811061398a57634e487b7160e01b600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b6139c5600185615b08565b9350613a5e565b600760fd1b6001600160f81b0319821610156139ed576139c5600285615b08565b600f60fc1b6001600160f81b031982161015613a0e576139c5600385615b08565b601f60fb1b6001600160f81b031982161015613a2f576139c5600485615b08565b603f60fa1b6001600160f81b031982161015613a50576139c5600585615b08565b613a5b600685615b08565b93505b5083613a6981615bdc565b945050613756565b5093949350505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190613ab0826117e5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316613b625760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610aa7565b6000613b6d836117e5565b9050806001600160a01b0316846001600160a01b03161480613bb457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806115a95750836001600160a01b0316613bcd84610a32565b6001600160a01b031614949350505050565b826001600160a01b0316613bf2826117e5565b6001600160a01b031614613c6e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610aa7565b6001600160a01b038216613cd05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610aa7565b613cdb838383613ffe565b613ce6600082613a7b565b6001600160a01b0383166000908152600360205260408120805460019290613d0f908490615b64565b90915550506001600160a01b0382166000908152600360205260408120805460019290613d3d908490615b08565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415613e525760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610aa7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b613eca848484613bdf565b613ed68484848461416f565b6129e85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610aa7565b6000613f48826117e5565b9050613f5681600084613ffe565b613f61600083613a7b565b6001600160a01b0381166000908152600360205260408120805460019290613f8a908490615b64565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6123d88282604051806020016040528060008152506142c4565b6000818152600b6020526040908190206001810180546001600160a01b0319166001600160a01b038681169190911790915560095492516324efba6760e01b8152919216906324efba679061405d9084908790610e10906004016158b5565b600060405180830381600087803b15801561407757600080fd5b505af115801561408b573d6000803e3d6000fd5b505060405161409d9250839150615291565b60405190819003812060095490917fd84638eecf3ca98484678c489ae80b333ee3f3af59b03949c41a361766d632b0916140e89185918891610e10916001600160a01b03169061590e565b60405180910390a2600a546001600160a01b03161561416a57600a54604051636abd941360e11b81526001600160a01b039091169063d57b282690614137908790879087908790600401615332565b600060405180830381600087803b15801561415157600080fd5b505af1158015614165573d6000803e3d6000fd5b505050505b6129e8565b60006001600160a01b0384163b156142bc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906141b3903390899088908890600401615300565b602060405180830381600087803b1580156141cd57600080fd5b505af19250505080156141fd575060408051601f3d908101601f191682019092526141fa91810190614b05565b60015b6142a2573d80801561422b576040519150601f19603f3d011682016040523d82523d6000602084013e614230565b606091505b50805161429a5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610aa7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115a9565b5060016115a9565b6142ce8383614342565b6142db600084848461416f565b610bdd5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610aa7565b6001600160a01b0382166143985760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610aa7565b6000818152600260205260409020546001600160a01b0316156143fd5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610aa7565b61440960008383613ffe565b6001600160a01b0382166000908152600360205260408120805460019290614432908490615b08565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461449c90615ba7565b90600052602060002090601f0160209004810192826144be5760008555614504565b82601f106144d757805160ff1916838001178555614504565b82800160010185558215614504579182015b828111156145045782518255916020019190600101906144e9565b50614510929150614514565b5090565b5b808211156145105760008155600101614515565b600061453c61453784615ae0565b615a8b565b905082815283838301111561455057600080fd5b828260208301376000602084830101529392505050565b60008083601f840112614578578182fd5b50813567ffffffffffffffff81111561458f578182fd5b6020830191508360208260051b85010111156145aa57600080fd5b9250929050565b60008083601f8401126145c2578182fd5b50813567ffffffffffffffff8111156145d9578182fd5b6020830191508360208285010111156145aa57600080fd5b600082601f830112614601578081fd5b61461083833560208501614529565b9392505050565b600082601f830112614627578081fd5b815161463561453782615ae0565b818152846020838601011115614649578283fd5b6115a9826020830160208701615b7b565b803561ffff8116811461466c57600080fd5b919050565b600060208284031215614682578081fd5b813561461081615c23565b60006020828403121561469e578081fd5b815161461081615c23565b600080604083850312156146bb578081fd5b82356146c681615c23565b915060208301356146d681615c23565b809150509250929050565b6000806000606084860312156146f5578081fd5b833561470081615c23565b9250602084013561471081615c23565b929592945050506040919091013590565b60008060008060808587031215614736578182fd5b843561474181615c23565b9350602085013561475181615c23565b925060408501359150606085013567ffffffffffffffff811115614773578182fd5b8501601f81018713614783578182fd5b61479287823560208401614529565b91505092959194509250565b600080600080606085870312156147b3578182fd5b84356147be81615c23565b935060208581013567ffffffffffffffff808211156147db578485fd5b6147e789838a01614567565b909650945060408801359150808211156147ff578384fd5b508601601f81018813614810578283fd5b803561481e61453782615abc565b8082825284820191508484018b868560051b870101111561483d578687fd5b8694505b83851015614866576148528161465a565b835260019490940193918501918501614841565b50979a9699509497505050505050565b60008060408385031215614888578182fd5b823561489381615c23565b915060208301356146d681615c38565b600080600080606085870312156148b8578182fd5b84356148c381615c23565b9350602085013567ffffffffffffffff808211156148df578384fd5b6148eb888389016145f1565b94506040870135915080821115614900578384fd5b5061490d878288016145b1565b95989497509550505050565b6000806040838503121561492b578182fd5b823561493681615c23565b946020939093013593505050565b60006020808385031215614956578182fd5b825167ffffffffffffffff8082111561496d578384fd5b818501915085601f830112614980578384fd5b815161498e61453782615abc565b80828252858201915085850189878560051b88010111156149ad578788fd5b875b848110156149e6578151868111156149c557898afd5b6149d38c8a838b0101614617565b85525092870192908701906001016149af565b50909998505050505050505050565b600080600060408486031215614a09578081fd5b833567ffffffffffffffff80821115614a20578283fd5b818601915086601f830112614a33578283fd5b81356020614a4361453783615abc565b8083825282820191508286018b848660051b8901011115614a62578788fd5b875b85811015614a9b57813587811115614a7a57898afd5b614a888e87838c01016145f1565b8552509284019290840190600101614a64565b50909850505087013592505080821115614ab3578283fd5b50614ac086828701614567565b9497909650939450505050565b600060208284031215614ade578081fd5b815161461081615c38565b600060208284031215614afa578081fd5b813561461081615c46565b600060208284031215614b16578081fd5b815161461081615c46565b600060208284031215614b32578081fd5b5051919050565b60008060008060608587031215614b4e578182fd5b843567ffffffffffffffff811115614b64578283fd5b614b70878288016145b1565b90989097506020870135966040013595509350505050565b600060208284031215614b99578081fd5b813567ffffffffffffffff811115614baf578182fd5b6115a9848285016145f1565b600060208284031215614bcc578081fd5b815167ffffffffffffffff811115614be2578182fd5b6115a984828501614617565b60008060408385031215614c00578182fd5b823567ffffffffffffffff811115614c16578283fd5b614c22858286016145f1565b92505060208301356146d681615c23565b600080600060408486031215614c47578081fd5b833567ffffffffffffffff80821115614c5e578283fd5b614c6a878388016145f1565b94506020860135915080821115614c7f578283fd5b50614ac0868287016145b1565b60008060008060608587031215614ca1578182fd5b843567ffffffffffffffff80821115614cb8578384fd5b614cc4888389016145f1565b95506020870135915080821115614cd9578384fd5b50614ce6878288016145b1565b9094509250506040850135614cfa81615c23565b939692955090935050565b60008060008060608587031215614d1a578182fd5b843567ffffffffffffffff80821115614d31578384fd5b614d3d888389016145f1565b95506020870135915080821115614d52578384fd5b50614d5f878288016145b1565b9598909750949560400135949350505050565b600080600080600060808688031215614d89578283fd5b853567ffffffffffffffff80821115614da0578485fd5b614dac89838a016145f1565b96506020880135915080821115614dc1578485fd5b50614dce888289016145b1565b9699909850959660408101359660609091013595509350505050565b600080600080600060608688031215614e01578283fd5b853567ffffffffffffffff80821115614e18578485fd5b614e2489838a016145f1565b96506020880135915080821115614e39578485fd5b614e4589838a016145b1565b90965094506040880135915080821115614e5d578283fd5b50614e6a888289016145b1565b969995985093965092949392505050565b60008060008060008060008060a0898b031215614e96578586fd5b883567ffffffffffffffff80821115614ead578788fd5b614eb98c838d016145f1565b995060208b0135915080821115614ece578788fd5b614eda8c838d016145b1565b909950975060408b0135915080821115614ef2578485fd5b614efe8c838d016145b1565b909750955060608b0135915080821115614f16578485fd5b50614f238b828c016145b1565b999c989b50969995989497949560800135949350505050565b60008060008060808587031215614f51578182fd5b843567ffffffffffffffff80821115614f68578384fd5b614f74888389016145f1565b95506020870135915080821115614f89578384fd5b50614f96878288016145f1565b9350506040850135614fa781615c23565b9396929550929360600135925050565b60008060408385031215614fc9578182fd5b823567ffffffffffffffff811115614fdf578283fd5b614feb858286016145f1565b95602094909401359450505050565b60006040828403121561500b578081fd5b615013615a62565b825161501e81615c23565b81526020928301519281019290925250919050565b600060408284031215615044578081fd5b61504c615a62565b82518152602083015160208201528091505092915050565b600060208284031215615075578081fd5b815167ffffffffffffffff8082111561508c578283fd5b908301906060828603121561509f578283fd5b6040516060810181811083821117156150ba576150ba615c0d565b6040528251828111156150cb578485fd5b6150d787828601614617565b8252506020830151828111156150eb578485fd5b6150f787828601614617565b6020830152506040830151604082015280935050505092915050565b600060208284031215615124578081fd5b6146108261465a565b60006020828403121561513e578081fd5b5035919050565b600081518084526020808501808196508360051b81019150828601855b8581101561518c57828403895261517a848351615199565b98850198935090840190600101615162565b5091979650505050505050565b600081518084526151b1816020860160208601615b7b565b601f01601f19169290920160200192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081546151fb81615ba7565b808552602060018381168015615218576001811461522c5761525a565b60ff1985168884015260408801955061525a565b866000528260002060005b858110156152525781548a8201860152908301908401615237565b890184019650505b505050505092915050565b8183823760009101908152919050565b60008251615287818460208701615b7b565b9190910192915050565b600080835461529f81615ba7565b600182811680156152b757600181146152c8576152f4565b60ff198416875282870194506152f4565b8786526020808720875b858110156152eb5781548a8201529084019082016152d2565b50505082870194505b50929695505050505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526113146080830184615199565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261131460808301846151ee565b6001600160a01b03851681526060602082015260006153866060830186615199565b82810360408401526153998185876151c5565b979650505050505050565b60006001600160a01b038088168352608060208401526153c76080840188615199565b83810360408501526153da8187896151c5565b9250508084166060840152509695505050505050565b6001600160a01b03861681526080602082015260006154126080830187615199565b82810360408401526154258186886151c5565b9150508260608301529695505050505050565b6001600160a01b038716815260806020820152600061545a6080830188615199565b828103604084015261546d8187896151c5565b905082810360608401526154828185876151c5565b9998505050505050505050565b6020815260006146106020830184615145565b6040815260006154b56040830186615145565b82810360208481019190915284825285918101835b868110156154f15761ffff6154de8561465a565b16825292820192908201906001016154ca565b50979650505050505050565b6060815260006155116060830186886151c5565b6020830194909452506040015292915050565b6020815260006146106020830184615199565b60408152600061554a6040830185615199565b90506001600160a01b03831660208301529392505050565b6060815260006155756060830186615199565b6001600160a01b039490941660208301525060400152919050565b6040815260006155a36040830186615199565b82810360208401526113148185876151c5565b6060815260006155c96060830187615199565b82810360208401526155dc8186886151c5565b9150506001600160a01b038316604083015295945050505050565b60608152600061560a6060830187615199565b828103602084015261561d8186886151c5565b91505082604083015295945050505050565b6080815260006156426080830188615199565b82810360208401526156558187896151c5565b60408401959095525050606001529392505050565b60a08152600061567d60a0830189615199565b828103602084015261569081888a6151c5565b6040840196909652505060608101929092526001600160a01b03166080909101529392505050565b6060815260006156cb6060830188615199565b82810360208401526156de8187896151c5565b905082810360408401526156f38185876151c5565b98975050505050505050565b60a08152600061571260a083018b615199565b8281036020840152615725818a8c6151c5565b9050828103604084015261573a81888a6151c5565b9050828103606084015261574f8186886151c5565b9150508260808301529998505050505050505050565b60c08152600061577860c083018c615199565b828103602084015261578b818b8d6151c5565b905082810360408401526157a081898b6151c5565b905082810360608401526157b58187896151c5565b9150508360808301526001600160a01b03831660a08301529a9950505050505050505050565b6080815260006157ee6080830187615199565b82810360208401526158008187615199565b6001600160a01b0395909516604084015250506060015292915050565b60a08152600061583060a0830188615199565b82810360208401526158428188615199565b6001600160a01b03968716604085015260608401959095525050921660809092019190915292915050565b6040815260006158806040830185615199565b905061ffff831660208301529392505050565b6040815260006158a66040830185615199565b90508260208301529392505050565b6080815260006158c860808301866151ee565b82810360208401526158f281600b81526a195d9b57d91959985d5b1d60aa1b602082015260400190565b6001600160a01b03959095166040840152505060600152919050565b60a08152600061592160a08301876151ee565b828103602084015261594b81600b81526a195d9b57d91959985d5b1d60aa1b602082015260400190565b6001600160a01b039687166040850152606084019590955250509216608090920191909152919050565b6040815260006158a660408301856151ee565b6020815260008251606060208401526159a46080840182615199565b90506020840151601f198483030160408501526159c18282615199565b915050604084015160608401528091505092915050565b6020815260008251606060208401526159f46080840182615199565b90506001600160a01b036020850151166040840152604084015160608401528091505092915050565b6000808335601e19843603018112615a33578283fd5b83018035915067ffffffffffffffff821115615a4d578283fd5b6020019150368190038213156145aa57600080fd5b6040805190810167ffffffffffffffff81118282101715615a8557615a85615c0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715615ab457615ab4615c0d565b604052919050565b600067ffffffffffffffff821115615ad657615ad6615c0d565b5060051b60200190565b600067ffffffffffffffff821115615afa57615afa615c0d565b50601f01601f191660200190565b60008219821115615b1b57615b1b615bf7565b500190565b600060ff821660ff84168060ff03821115615b3d57615b3d615bf7565b019392505050565b6000816000190483118215151615615b5f57615b5f615bf7565b500290565b600082821015615b7657615b76615bf7565b500390565b60005b83811015615b96578181015183820152602001615b7e565b838111156129e85750506000910152565b600181811c90821680615bbb57607f821691505b60208210811415610dbf57634e487b7160e01b600052602260045260246000fd5b6000600019821415615bf057615bf0615bf7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461363357600080fd5b801515811461363357600080fd5b6001600160e01b03198116811461363357600080fdfea26469706673582212208ea6ce4ce8ac02582bdcb315edfd970495edd44e363ef7c6fe9008b1edab342064736f6c63430008040033