0 txs
0 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
getImplementation
viewfunction getImplementation() view returns (address)
iconTokenAddress
viewfunction iconTokenAddress() view returns (string)
name
viewfunction name() view returns (string)
nid
viewfunction nid() view returns (string)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
xCall
viewfunction xCall() view returns (address)
xCallManager
viewfunction xCallManager() view returns (address)
xCallNetworkAddress
viewfunction xCallNetworkAddress() view returns (string)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
crossTransfer
payablefunction crossTransfer(string to, uint256 value, bytes data) payable
crossTransfer
payablefunction crossTransfer(string to, uint256 value) payable
handleCallMessage
nonpayablefunction handleCallMessage(string from, bytes data, string[] protocols)
initialize_token
nonpayablefunction initialize_token(address _xCall, string _iconTokenAddress, address _xCallManager)
initialize
nonpayablefunction initialize(string name, string symbol, address _xCall, string _iconTokenAddress, address _xCallManager)
renounceOwnership
nonpayablefunction renounceOwnership()
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d61002a565b61002561002a565b6100dc565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561007a5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d95780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161404d610105600039600081816113ff015281816114280152611569015261404d6000f3fe6080604052600436106101815760003560e01c80638da5cb5b116100d1578063b87045931161008a578063de8aa96711610064578063de8aa96714610484578063e754f58714610499578063e8bfdc53146104ae578063f2fde38b146104ce57600080fd5b8063b870459314610424578063d6f340a914610444578063dd62ed3e1461046457600080fd5b80638da5cb5b1461034557806395d89b4114610396578063a9059cbb146103ab578063aaf10f42146103cb578063ad3cb1cc146103e0578063b16c1ced1461041157600080fd5b80634096bf051161013e57806352d1902d1161011857806352d1902d146102b85780635d6a16f5146102cd57806370a08231146102ed578063715018a61461033057600080fd5b80634096bf051461027d5780634bed2551146102925780634f1ef286146102a557600080fd5b806306fdde0314610186578063095ea7b3146101b157806318160ddd146101e157806323b872dd1461021f57806328ccf8441461023f578063313ce56714610261575b600080fd5b34801561019257600080fd5b5061019b6104ee565b6040516101a89190613253565b60405180910390f35b3480156101bd57600080fd5b506101d16101cc366004613282565b6105b1565b60405190151581526020016101a8565b3480156101ed57600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b6040519081526020016101a8565b34801561022b57600080fd5b506101d161023a3660046132ac565b6105cb565b34801561024b57600080fd5b5061025f61025a3660046133af565b6105f1565b005b34801561026d57600080fd5b50604051601281526020016101a8565b34801561028957600080fd5b5061019b6108d0565b61025f6102a0366004613462565b61095e565b61025f6102b33660046134a6565b61097c565b3480156102c457600080fd5b50610211610997565b3480156102d957600080fd5b5061025f6102e836600461353b565b6109b4565b3480156102f957600080fd5b50610211610308366004613611565b6001600160a01b03166000908152600080516020613fd8833981519152602052604090205490565b34801561033c57600080fd5b5061025f610e12565b34801561035157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101a8565b3480156103a257600080fd5b5061019b610e26565b3480156103b757600080fd5b506101d16103c6366004613282565b610e65565b3480156103d757600080fd5b5061037e610e73565b3480156103ec57600080fd5b5061019b604051806040016040528060058152602001640352e302e360dc1b81525081565b61025f61041f36600461362c565b610e99565b34801561043057600080fd5b5061025f61043f36600461369c565b610ea9565b34801561045057600080fd5b5060045461037e906001600160a01b031681565b34801561047057600080fd5b5061021161047f3660046136f9565b610ffb565b34801561049057600080fd5b5061019b611045565b3480156104a557600080fd5b5061019b611052565b3480156104ba57600080fd5b5060005461037e906001600160a01b031681565b3480156104da57600080fd5b5061025f6104e9366004613611565b61105f565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace038054606091600080516020613fd88339815191529161052d9061372c565b80601f01602080910402602001604051908101604052809291908181526020018280546105599061372c565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050505091505090565b6000336105bf81858561109d565b60019150505b92915050565b6000336105d98582856110aa565b6105e4858585611110565b60019150505b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156106365750825b90506000826001600160401b031660011480156106525750303b155b905081158015610660575080155b1561067e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156106a857845460ff60401b1916600160401b1785555b6001600160a01b0388161515806106c757506001600160a01b03861615155b6107185760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b038a16908117825560408051636bf459cb60e01b815290519192636bf459cb926004808401938290030181865afa15801561076c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079491908101906137a5565b6001906107a19082613820565b50610835600180546107b29061372c565b80601f01602080910402602001604051908101604052809291908181526020018280546107de9061372c565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b505050505061116f565b6002906108429082613820565b50600361084f8882613820565b50600480546001600160a01b0319166001600160a01b0388161790556108758a8a611185565b61087e33611197565b83156108c457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b600180546108dd9061372c565b80601f01602080910402602001604051908101604052809291908181526020018280546109099061372c565b80156109565780601f1061092b57610100808354040283529160200191610956565b820191906000526020600020905b81548152906001019060200180831161093957829003601f168201915b505050505081565b6109788282604051806020016040528060008152506111a8565b5050565b6109846113f4565b61098d82611499565b61097882826114a1565b60006109a161155e565b50600080516020613ff883398151915290565b6000546001600160a01b03163314610a005760405162461bcd60e51b815260206004820152600f60248201526e6f6e6c7943616c6c5365727669636560881b604482015260640161070f565b600480546040516377ef816560e11b81526001600160a01b039091169163efdf02ca91610a31918691869101613907565b602060405180830381865afa158015610a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7291906139a9565b610ab25760405162461bcd60e51b81526020600482015260116024820152700a0e4dee8dec6ded8409ad2e6dac2e8c6d607b1b604482015260640161070f565b6000610af385858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115a792505050565b9050610b2e6040518060400160405280600e81526020016d3c21b937b9b9aa3930b739b332b960911b8152508261160990919063ffffffff16565b15610ce657610c0060038054610b439061372c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6f9061372c565b8015610bbc5780601f10610b9157610100808354040283529160200191610bbc565b820191906000526020600020905b815481529060010190602001808311610b9f57829003601f168201915b505050505088888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506116099050565b610c435760405162461bcd60e51b81526020600482015260146024820152736f6e6c7949636f6e546f6b656e4164647265737360601b604482015260640161070f565b6000610c8486868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166f92505050565b90506000610c95826020015161175a565b915050610cdf610cd56040518060400160405280600f81526020016e496e76616c6964206164647265737360881b8152508361179690919063ffffffff16565b8360400151611a68565b5050610e09565b6040805180820190915260148152731e10dc9bdcdcd51c985b9cd9995c94995d995c9d60621b6020820152610d1c908290611609565b15610dca57610d3160018054610b439061372c565b610d6f5760405162461bcd60e51b815260206004820152600f60248201526e6f6e6c7943616c6c5365727669636560881b604482015260640161070f565b6000610db086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a9e92505050565b9050610dc481600001518260200151611a68565b50610e09565b60405162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e206d657373616765207479706560601b604482015260640161070f565b50505050505050565b610e1a611b35565b610e246000611b90565b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020613fd88339815191529161052d9061372c565b6000336105bf818585611110565b6000610e94600080516020613ff8833981519152546001600160a01b031690565b905090565b610ea48383836111a8565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610eee5750825b90506000826001600160401b03166001148015610f0a5750303b155b905081158015610f18575080155b15610f365760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f6057845460ff60401b1916600160401b1785555b610fab6040518060400160405280600a8152602001690a6e8c2d6cac8409286b60b31b815250604051806040016040528060048152602001630a69286b60e31b8152508a8a8a6105f1565b8315610ff157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b600280546108dd9061372c565b600380546108dd9061372c565b611067611b35565b6001600160a01b03811661109157604051631e4fbdf760e01b81526000600482015260240161070f565b61109a81611b90565b50565b610ea48383836001611c01565b60006110b68484610ffb565b9050600019811461110a57818110156110fb57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161070f565b61110a84848484036000611c01565b50505050565b6001600160a01b03831661113a57604051634b637e8f60e11b81526000600482015260240161070f565b6001600160a01b0382166111645760405163ec442f0560e01b81526000600482015260240161070f565b610ea4838383611ce9565b60606105c582600061118085611e27565b611f33565b61118d611ff8565b6109788282612041565b61119f611ff8565b61109a81612092565b600082116111f85760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206c657373207468616e206d696e696d756d20616d6f756e7400604482015260640161070f565b611202338361209a565b60006112a9611210336120d0565b6002805461121d9061372c565b80601f01602080910402602001604051908101604052809291908181526020018280546112499061372c565b80156112965780601f1061126b57610100808354040283529160200191611296565b820191906000526020600020905b81548152906001019060200180831161127957829003601f168201915b50505050506120db90919063ffffffff16565b90506112b48461175a565b50506040805160808101825282815260208082018790528183018690526060820185905282518084018452338152908101869052600480548451631e86976d60e31b81529451939492936000936001600160a01b039092169263f434bb689280820192869290918290030181865afa158015611334573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261135c9190810190613a71565b6000549091506001600160a01b031663edc6afff34600361137c87612122565b611385876121b5565b865160208801516040516001600160e01b031960e089901b1681526113b1959493929190600401613b78565b60206040518083038185885af11580156113cf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ff19190613c56565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061147b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661146f600080516020613ff8833981519152546001600160a01b031690565b6001600160a01b031614155b15610e245760405163703e46dd60e11b815260040160405180910390fd5b61109a611b35565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114fb575060408051601f3d908101601f191682019092526114f891810190613c56565b60015b61152357604051634c9c8ce360e01b81526001600160a01b038316600482015260240161070f565b600080516020613ff8833981519152811461155457604051632a87526960e21b81526004810182905260240161070f565b610ea48383612221565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e245760405163703e46dd60e11b815260040160405180910390fd5b606060006115e46115df8460408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b612277565b90506105ea816000815181106115fc576115fc613c6f565b60200260200101516123b6565b60008160405160200161161c9190613c85565b60405160208183030381529060405280519060200120836040516020016116439190613c85565b6040516020818303038152906040528051906020012003611666575060016105c5565b50600092915050565b61169a6040518060800160405280606081526020016060815260200160008152602001606081525090565b60006116d06115df8460408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b905060405180608001604052806116f3836001815181106115fc576115fc613c6f565b815260200161170e836002815181106115fc576115fc613c6f565b81526020016117368360038151811061172957611729613c6f565b602002602001015161248f565b8152602001611751836004815181106115fc576115fc613c6f565b90529392505050565b606080600061176884611e27565b905061177684600083611f33565b61178c85611785846001613cb7565b8751611f33565b9250925050915091565b81516000908390602a1480156117da5750600360fc1b6001600160f81b031916816000815181106117c9576117c9613c6f565b01602001516001600160f81b031916145b80156118145750600f60fb1b6001600160f81b0319168160018151811061180357611803613c6f565b01602001516001600160f81b031916145b83906118335760405162461bcd60e51b815260040161070f9190613253565b5060408051601480825281830190925260009160208201818036833701905050905060008080805b60288110156119c35785611870826002613cb7565b8151811061188057611880613c6f565b016020015160f81c935060016030851015611899575060005b8460ff1660391080156118af575060418560ff16105b156118b8575060005b8460ff1660461080156118ce575060618560ff16105b156118d7575060005b8460ff16606610156118e7575060005b80611906578860405162461bcd60e51b815260040161070f9190613253565b60418560ff16101561191b5760309250611935565b8460ff16604610156119305760579250611935565b603792505b611940600283613ce0565b600003611958576119518386613cf4565b93506119ba565b6119628386613cf4565b61196d856010613d0d565b6119779190613d29565b60f81b866002611988600186613d42565b6119929190613d55565b815181106119a2576119a2613c6f565b60200101906001600160f81b031916908160001a9053505b5060010161185b565b506000846040516020016119d79190613c85565b60408051601f198184030181529190526014810151975090506001600160a01b038716611a5c5760025b8651811015611a5a57868181518110611a1c57611a1c613c6f565b60209101015189906001600160f81b031916600360fc1b14611a515760405162461bcd60e51b815260040161070f9190613253565b50600101611a01565b505b50505050505092915050565b6001600160a01b038216611a925760405163ec442f0560e01b81526000600482015260240161070f565b61097860008383611ce9565b60408051808201825260008082526020808301829052835180850185528281528101829052835180850190945284518452848101908401529091611ae190612277565b90506040518060400160405280611b1183600181518110611b0457611b04613c6f565b6020026020010151612541565b6001600160a01b031681526020016117518360028151811061172957611729613c6f565b33611b677f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e245760405163118cdaa760e01b815233600482015260240161070f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600080516020613fd88339815191526001600160a01b038516611c3a5760405163e602df0560e01b81526000600482015260240161070f565b6001600160a01b038416611c6457604051634a1406b160e11b81526000600482015260240161070f565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115611ce257836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611cd991815260200190565b60405180910390a35b5050505050565b600080516020613fd88339815191526001600160a01b038416611d255781816002016000828254611d1a9190613cb7565b90915550611d979050565b6001600160a01b03841660009081526020829052604090205482811015611d785760405163391434e360e21b81526001600160a01b0386166004820152602481018290526044810184905260640161070f565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316611db5576002810180548390039055611dd4565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e1991815260200190565b60405180910390a350505050565b600081815b8151811015611ef0576040805180820190915260018152602f60f81b60209091018190528251839083908110611e6457611e64613c6f565b01602001516001600160f81b03191603611ee857600681118015611e94575060018251611e919190613d42565b81105b60405180604001604052806015815260200174696e76616c69644e6574776f726b4164647265737360581b81525090611ee05760405162461bcd60e51b815260040161070f9190613253565b509392505050565b600101611e2c565b6040805180820182526015815274696e76616c69644e6574776f726b4164647265737360581b6020820152905162461bcd60e51b815261070f9190600401613253565b6060836000611f428585613d42565b6001600160401b03811115611f5957611f596132e9565b6040519080825280601f01601f191660200182016040528015611f83576020820181803683370190505b5090508460005b8251811015611fec578382611f9e81613d69565b935081518110611fb057611fb0613c6f565b602001015160f81c60f81b838281518110611fcd57611fcd613c6f565b60200101906001600160f81b031916908160001a905350600101611f8a565b50909695505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610e2457604051631afcd79f60e31b815260040160405180910390fd5b612049611ff8565b600080516020613fd88339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036120838482613820565b506004810161110a8382613820565b611067611ff8565b6001600160a01b0382166120c457604051634b637e8f60e11b81526000600482015260240161070f565b61097882600083611ce9565b60606105c582612594565b606082604051806040016040528060018152602001602f60f81b8152508360405160200161210b93929190613d82565b604051602081830303815290604052905092915050565b606060006121556040518060400160405280600e81526020016d3c21b937b9b9aa3930b739b332b960911b81525061275f565b83516121609061275f565b61216d856020015161275f565b61217a866040015161276a565b6121878760600151612778565b60405160200161219b959493929190613dc5565b60405160208183030381529060405290506105ea816127d0565b606060006121ee604051806040016040528060148152602001731e10dc9bdcdcd51c985b9cd9995c94995d995c9d60621b81525061275f565b8351612202906001600160a01b0316612806565b61220f856020015161276a565b60405160200161219b93929190613d82565b61222a82612829565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561226f57610ea4828261288e565b610978612904565b606061228282612923565b6122bf5760405162461bcd60e51b815260206004820152600e60248201526d135d5cdd0818994818481b1a5cdd60921b604482015260640161070f565b60006122ca8361295e565b90506000816001600160401b038111156122e6576122e66132e9565b60405190808252806020026020018201604052801561232b57816020015b60408051808201909152600080825260208201528152602001906001900390816123045790505b509050600061233d85602001516129e3565b856020015161234c9190613cb7565b90506000805b848110156123ab5761236383612a64565b915060405180604001604052808381526020018481525084828151811061238c5761238c613c6f565b60209081029190910101526123a18284613cb7565b9250600101612352565b509195945050505050565b80516060906123f85760405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c840d8cadccee8d60931b604482015260640161070f565b600061240783602001516129e3565b9050600081846000015161241b9190613d42565b90506000816001600160401b03811115612437576124376132e9565b6040519080825280601f01601f191660200182016040528015612461576020820181803683370190505b509050600081602001905061248684876020015161247f9190613cb7565b8285612b0d565b50949350505050565b8051600090158015906124a457508151602110155b6124e65760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103ab4b73a10373ab6b132b960691b604482015260640161070f565b60006124f583602001516129e3565b905060008184600001516125099190613d42565b905060008083866020015161251e9190613cb7565b905080519150602083101561248657506020919091036101000a90049392505050565b805160009060151461258b5760405162461bcd60e51b81526020600482015260136024820152724d7573742068617665206c656e67746820323160681b604482015260640161070f565b6105c58261248f565b604080516028808252606082810190935283831b9160009160208201818036833701905050905060008060008060008060006125cf8b612b8f565b905060005b601481101561272e576125e8816013613d42565b6125f3906008613e30565b6125fe906002613f2e565b61260c9060608c901c613d55565b9750612619601089613f3a565b9650612626876010613d0d565b6126309089613cf4565b95508161263e826002613e30565b6028811061264e5761264e613c6f565b6020020151945081612661826002613e30565b61266c906001613cb7565b6028811061267c5761267c613c6f565b6020020151935061268d8786612d16565b92506126998388613d29565b60f81b896126a8836002613e30565b815181106126b8576126b8613c6f565b60200101906001600160f81b031916908160001a9053506126d98685612d16565b92506126e58387613d29565b60f81b896126f4836002613e30565b6126ff906001613cb7565b8151811061270f5761270f613c6f565b60200101906001600160f81b031916908160001a9053506001016125d4565b50876040516020016127409190613f5c565b6040516020818303038152906040529950505050505050505050919050565b60606105c582612778565b60606105c561277883612d43565b606080825160011480156127a6575060808360008151811061279c5761279c613c6f565b016020015160f81c105b156127b25750816105c5565b6127be83516080612ded565b8360405160200161210b929190613f86565b60606127de825160c0612ded565b826040516020016127f0929190613f86565b6040516020818303038152906040529050919050565b60408051600560a21b83186014820152603481019091526060906105ea81612778565b806001600160a01b03163b60000361285f57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161070f565b600080516020613ff883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516128ab9190613c85565b600060405180830381855af49150503d80600081146128e6576040519150601f19603f3d011682016040523d82523d6000602084013e6128eb565b606091505b50915091506128fb858383612fa3565b95945050505050565b3415610e245760405163b398979f60e01b815260040160405180910390fd5b8051600090810361293657506000919050565b6020820151805160001a9060c0821015612954575060009392505050565b5060019392505050565b8051600090810361297157506000919050565b60008061298184602001516129e3565b84602001516129909190613cb7565b90506000846000015185602001516129a89190613cb7565b90505b808210156129da576129bc82612a64565b6129c69083613cb7565b9150826129d281613d69565b9350506129ab565b50909392505050565b8051600090811a60808110156129fc5750600092915050565b60b8811080612a17575060c08110801590612a17575060f881105b15612a255750600192915050565b60c0811015612a5257612a3a600160b8613cf4565b612a479060ff1682613d42565b6105ea906001613cb7565b612a3a600160f8613cf4565b50919050565b80516000908190811a6080811015612a7f5760019150612b06565b60b8811015612aa557612a93608082613d42565b612a9e906001613cb7565b9150612b06565b60c0811015612ad25760b78103600185019450806020036101000a85510460018201810193505050612b06565b60f8811015612ae657612a9360c082613d42565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80600003612b1a57505050565b60208110612b525782518252612b31602084613cb7565b9250612b3e602083613cb7565b9150612b4b602082613d42565b9050612b1a565b8015610ea45760006001612b67836020613d42565b612b7390610100613f2e565b612b7d9190613d42565b84518451821691191617835250505050565b612b976131e4565b606082901b6000612ba782612fff565b604051602001612bb79190613c85565b60405160208183030381529060405280519060200120905060008060008060005b6014811015612d0a576010878260148110612bf557612bf5613c6f565b612c019291901a613fb5565b9350601084888360148110612c1857612c18613c6f565b612c249291901a613cf4565b612c2e9190613f3a565b94506010868260208110612c4457612c44613c6f565b612c509291901a613fb5565b9150601082878360208110612c6757612c67613c6f565b612c739291901a613cf4565b612c7d9190613f3a565b925060098560ff16118015612c95575060078360ff16115b88612ca1836002613e30565b60288110612cb157612cb1613c6f565b91151560209092020152600960ff8516118015612cd1575060078260ff16115b88612cdd836002613e30565b612ce8906001613cb7565b60288110612cf857612cf8613c6f565b91151560209092020152600101612bd8565b50505050505050919050565b6000600a8360ff161015612d2c575060306105c5565b8115612d3a575060376105c5565b50605792915050565b606081600003612d7057604080516001808252818301909252906020820181803683370190505092915050565b608060015b6020811015612da75781841015612d9857612d90848261314f565b949350505050565b60089190911b90600101612d75565b5080831015612dd4576040805160208101859052015b604051602081830303815290604052915050919050565b6040516000602082015260218101849052604101612dbd565b6060806038841015612e575760408051600180825281830190925290602082018180368337019050509050612e228385613cb7565b601f1a60f81b81600081518110612e3b57612e3b613c6f565b60200101906001600160f81b031916908160001a9053506105ea565b600060015b612e668187613d55565b15612e8c5781612e7581613d69565b9250612e85905061010082613e30565b9050612e5c565b612e97826001613cb7565b6001600160401b03811115612eae57612eae6132e9565b6040519080825280601f01601f191660200182016040528015612ed8576020820181803683370190505b509250612ee58583613cb7565b612ef0906037613cb7565b601f1a60f81b83600081518110612f0957612f09613c6f565b60200101906001600160f81b031916908160001a905350600190505b818111612f9a57610100612f398284613d42565b612f4590610100613f2e565b612f4f9088613d55565b612f599190613ce0565b601f1a60f81b838281518110612f7157612f71613c6f565b60200101906001600160f81b031916908160001a90535080612f9281613d69565b915050612f25565b50509392505050565b606082612fb857612fb3826131bb565b6105ea565b8151158015612fcf57506001600160a01b0384163b155b15612ff857604051639996b31560e01b81526001600160a01b038516600482015260240161070f565b50806105ea565b60408051602880825260608281019093526000919060208201818036833701905050905060008080805b60148110156131445761303d816013613d42565b613048906008613e30565b613053906002613f2e565b61306190606089901c613d55565b935061306e601085613f3a565b925061307b836010613d0d565b6130859085613cf4565b9150600a8360ff161061309957605761309c565b60305b6130a69084613d29565b60f81b856130b5836002613e30565b815181106130c5576130c5613c6f565b60200101906001600160f81b031916908160001a905350600a8260ff16106130ee5760576130f1565b60305b6130fb9083613d29565b60f81b8561310a836002613e30565b613115906001613cb7565b8151811061312557613125613c6f565b60200101906001600160f81b031916908160001a905350600101613029565b509295945050505050565b60606000826001600160401b0381111561316b5761316b6132e9565b6040519080825280601f01601f191660200182016040528015613195576020820181803683370190505b50905060208101836020035b6020811015612f9a5785811a8253600191820191016131a1565b8051156131cb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518061050001604052806028906020820280368337509192915050565b60005b8381101561321e578181015183820152602001613206565b50506000910152565b6000815180845261323f816020860160208601613203565b601f01601f19169290920160200192915050565b6020815260006105ea6020830184613227565b80356001600160a01b038116811461327d57600080fd5b919050565b6000806040838503121561329557600080fd5b61329e83613266565b946020939093013593505050565b6000806000606084860312156132c157600080fd5b6132ca84613266565b92506132d860208501613266565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613327576133276132e9565b604052919050565b60006001600160401b03821115613348576133486132e9565b50601f01601f191660200190565b600082601f83011261336757600080fd5b813560208301600061338061337b8461332f565b6132ff565b905082815285838301111561339457600080fd5b82826020830137600092810160200192909252509392505050565b600080600080600060a086880312156133c757600080fd5b85356001600160401b038111156133dd57600080fd5b6133e988828901613356565b95505060208601356001600160401b0381111561340557600080fd5b61341188828901613356565b94505061342060408701613266565b925060608601356001600160401b0381111561343b57600080fd5b61344788828901613356565b92505061345660808701613266565b90509295509295909350565b6000806040838503121561347557600080fd5b82356001600160401b0381111561348b57600080fd5b61349785828601613356565b95602094909401359450505050565b600080604083850312156134b957600080fd5b6134c283613266565b915060208301356001600160401b038111156134dd57600080fd5b6134e985828601613356565b9150509250929050565b60008083601f84011261350557600080fd5b5081356001600160401b0381111561351c57600080fd5b60208301915083602082850101111561353457600080fd5b9250929050565b6000806000806000806060878903121561355457600080fd5b86356001600160401b0381111561356a57600080fd5b61357689828a016134f3565b90975095505060208701356001600160401b0381111561359557600080fd5b6135a189828a016134f3565b90955093505060408701356001600160401b038111156135c057600080fd5b8701601f810189136135d157600080fd5b80356001600160401b038111156135e757600080fd5b8960208260051b84010111156135fc57600080fd5b60208201935080925050509295509295509295565b60006020828403121561362357600080fd5b6105ea82613266565b60008060006060848603121561364157600080fd5b83356001600160401b0381111561365757600080fd5b61366386828701613356565b9350506020840135915060408401356001600160401b0381111561368657600080fd5b61369286828701613356565b9150509250925092565b6000806000606084860312156136b157600080fd5b6136ba84613266565b925060208401356001600160401b038111156136d557600080fd5b6136e186828701613356565b9250506136f060408501613266565b90509250925092565b6000806040838503121561370c57600080fd5b61371583613266565b915061372360208401613266565b90509250929050565b600181811c9082168061374057607f821691505b602082108103612a5e57634e487b7160e01b600052602260045260246000fd5b600082601f83011261377157600080fd5b815161377f61337b8261332f565b81815284602083860101111561379457600080fd5b612d90826020830160208701613203565b6000602082840312156137b757600080fd5b81516001600160401b038111156137cd57600080fd5b612d9084828501613760565b601f821115610ea457806000526020600020601f840160051c810160208510156138005750805b601f840160051c820191505b81811015611ce2576000815560010161380c565b81516001600160401b03811115613839576138396132e9565b61384d81613847845461372c565b846137d9565b6020601f82116001811461388157600083156138695750848201515b600019600385901b1c1916600184901b178455611ce2565b600084815260208120601f198516915b828110156138b15787850151825560209485019460019092019101613891565b50848210156138cf5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020808252810182905260006040600584901b830181019083018583601e1936839003015b8782101561399c57868503603f19018452823581811261394b57600080fd5b89016020810190356001600160401b0381111561396757600080fd5b80360382131561397657600080fd5b6139818782846138de565b9650505060208301925060208401935060018201915061392c565b5092979650505050505050565b6000602082840312156139bb57600080fd5b815180151581146105ea57600080fd5b600082601f8301126139dc57600080fd5b81516001600160401b038111156139f5576139f56132e9565b8060051b613a05602082016132ff565b91825260208185018101929081019086841115613a2157600080fd5b6020860192505b83831015613a675782516001600160401b03811115613a4657600080fd5b613a55886020838a0101613760565b83525060209283019290910190613a28565b9695505050505050565b600060208284031215613a8357600080fd5b81516001600160401b03811115613a9957600080fd5b820160408185031215613aab57600080fd5b604080519081016001600160401b0381118282101715613acd57613acd6132e9565b60405281516001600160401b03811115613ae657600080fd5b613af2868285016139cb565b82525060208201516001600160401b03811115613b0e57600080fd5b613b1a868285016139cb565b602083015250949350505050565b600082825180855260208501945060208160051b8301016020850160005b83811015611fec57601f19858403018852613b62838351613227565b6020988901989093509190910190600101613b46565b60a081526000808754613b8a8161372c565b8060a08601526001821660008114613ba95760018114613bc557613bf9565b60ff19831660c087015260c082151560051b8701019350613bf9565b8a600052602060002060005b83811015613bf057815488820160c00152600190910190602001613bd1565b870160c0019450505b5050508281036020840152613c0e8188613227565b90508281036040840152613c228187613227565b90508281036060840152613c368186613b28565b90508281036080840152613c4a8185613b28565b98975050505050505050565b600060208284031215613c6857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60008251613c97818460208701613203565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105c5576105c5613ca1565b634e487b7160e01b600052601260045260246000fd5b600082613cef57613cef613cca565b500690565b60ff82811682821603908111156105c5576105c5613ca1565b60ff8181168382160290811690818114612b0657612b06613ca1565b60ff81811683821601908111156105c5576105c5613ca1565b818103818111156105c5576105c5613ca1565b600082613d6457613d64613cca565b500490565b600060018201613d7b57613d7b613ca1565b5060010190565b60008451613d94818460208901613203565b845190830190613da8818360208901613203565b8451910190613dbb818360208801613203565b0195945050505050565b60008651613dd7818460208b01613203565b865190830190613deb818360208b01613203565b8651910190613dfe818360208a01613203565b8551910190613e11818360208901613203565b8451910190613e24818360208801613203565b01979650505050505050565b80820281158282048414176105c5576105c5613ca1565b6001815b6001841115613e8257808504811115613e6657613e66613ca1565b6001841615613e7457908102905b60019390931c928002613e4b565b935093915050565b600082613e99575060016105c5565b81613ea6575060006105c5565b8160018114613ebc5760028114613ec657613ee2565b60019150506105c5565b60ff841115613ed757613ed7613ca1565b50506001821b6105c5565b5060208310610133831016604e8410600b8410161715613f05575081810a6105c5565b613f126000198484613e47565b8060001904821115613f2657613f26613ca1565b029392505050565b60006105ea8383613e8a565b600060ff831680613f4d57613f4d613cca565b8060ff84160491505092915050565b61060f60f31b815260008251613f79816002850160208701613203565b9190910160020192915050565b60008351613f98818460208801613203565b835190830190613fac818360208801613203565b01949350505050565b600060ff831680613fc857613fc8613cca565b8060ff8416069150509291505056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220fbac0ca19630bdccf82823614b03c0c0e784ef57a1029e7d1834997135ccef2164736f6c634300081a0033