0 txs
1 call
constructor
No constructor.
functions
admin
viewfunction admin() view returns (address)
currentChainID
viewfunction currentChainID() view returns (uint256)
getBatchFee
viewfunction getBatchFee(uint256 tokenPairID, uint256 batchLength) view returns (uint256)
getEtherTransferGasLimit
viewfunction getEtherTransferGasLimit() view returns (uint256)
getFee
viewfunction getFee(tuple param) view returns (tuple fee)
getFees
viewfunction getFees(tuple[] params) view returns (tuple[] fees)
getMaxBatchSize
viewfunction getMaxBatchSize() view returns (uint256)
getPartners
viewfunction getPartners() view returns (address tokenManager, address smgAdminProxy, address smgFeeProxy, address quota, address sigVerifier)
getStoremanFee
viewfunction getStoremanFee(bytes32 key) view returns (uint256 fee)
getTokenPairFee
viewfunction getTokenPairFee(uint256 tokenPairID) view returns (uint256 contractFee)
getTokenPairFees
viewfunction getTokenPairFees(uint256[] tokenPairIDs) view returns (uint256[] contractFees)
getUintValue
viewfunction getUintValue(bytes key, bytes innerKey) view returns (uint256)
halted
viewfunction halted() view returns (bool)
hashFunc
viewfunction hashFunc(bytes data) view returns (bytes32)
hashType
viewfunction hashType() view returns (uint256)
implementation
viewfunction implementation() view returns (address)
isAdmin
viewfunction isAdmin(address) view returns (bool)
isOperator
viewfunction isOperator(address) view returns (bool)
lockedTime
viewfunction lockedTime() view returns (uint256)
newOwner
viewfunction newOwner() view returns (address)
onERC1155BatchReceived
purefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) pure returns (bytes4)
onERC1155Received
purefunction onERC1155Received(address, address, uint256, uint256, bytes) pure returns (bytes4)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
smgFeeReceiverTimeout
viewfunction smgFeeReceiverTimeout() view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
changeOwner
nonpayablefunction changeOwner(address _newOwner)
configAdmin
nonpayablefunction configAdmin(address _admin, bool enabled)
configOperator
nonpayablefunction configOperator(address _operator, bool enabled)
delUintValue
nonpayablefunction delUintValue(bytes key, bytes innerKey)
renounceOwnership
nonpayablefunction renounceOwnership()
setAdmin
nonpayablefunction setAdmin(address adminAccount)
setChainID
nonpayablefunction setChainID(uint256 chainID)
setEtherTransferGasLimit
nonpayablefunction setEtherTransferGasLimit(uint256 _etherTransferGasLimit)
setFee
nonpayablefunction setFee(tuple param)
setFees
nonpayablefunction setFees(tuple[] params)
setHalt
nonpayablefunction setHalt(bool halt)
setHashType
nonpayablefunction setHashType(uint256 _hashType)
setMaxBatchSize
nonpayablefunction setMaxBatchSize(uint256 _maxBatchSize)
setPartners
nonpayablefunction setPartners(address tokenManager, address smgAdminProxy, address smgFeeProxy, address, address sigVerifier)
setTokenPairFee
nonpayablefunction setTokenPairFee(uint256 tokenPairID, uint256 contractFee)
setTokenPairFees
nonpayablefunction setTokenPairFees(tuple[] params)
setUintValue
nonpayablefunction setUintValue(bytes key, bytes innerKey, uint256 value)
smgMint
nonpayablefunction smgMint(bytes32 uniqueID, bytes32 smgID, uint256 tokenPairID, uint256 value, uint256 fee, address tokenAccount, address userAccount, bytes r, bytes32 s)
smgMintNFT
nonpayablefunction smgMintNFT(bytes32 uniqueID, bytes32 smgID, uint256 tokenPairID, uint256[] tokenIDs, uint256[] tokenValues, bytes extData, address tokenAccount, address userAccount, bytes r, bytes32 s)
smgRelease
nonpayablefunction smgRelease(bytes32 uniqueID, bytes32 smgID, uint256 tokenPairID, uint256 value, uint256 fee, address tokenAccount, address userAccount, bytes r, bytes32 s)
smgReleaseNFT
nonpayablefunction smgReleaseNFT(bytes32 uniqueID, bytes32 smgID, uint256 tokenPairID, uint256[] tokenIDs, uint256[] tokenValues, address tokenAccount, address userAccount, bytes r, bytes32 s)
smgWithdrawHistoryFee
nonpayablefunction smgWithdrawHistoryFee(bytes32[] smgIDs)
transferOwner
nonpayablefunction transferOwner(address _newOwner)
userBurn
payablefunction userBurn(bytes32 smgID, uint256 tokenPairID, uint256 value, uint256 fee, address tokenAccount, bytes userAccount) payable
userBurnNFT
payablefunction userBurnNFT(bytes32 smgID, uint256 tokenPairID, uint256[] tokenIDs, uint256[] tokenValues, address tokenAccount, bytes userAccount) payable
userLock
payablefunction userLock(bytes32 smgID, uint256 tokenPairID, uint256 value, bytes userAccount) payable
userLockNFT
payablefunction userLockNFT(bytes32 smgID, uint256 tokenPairID, uint256[] tokenIDs, uint256[] tokenValues, bytes userAccount) payable
events
ConfigAdmin
event ConfigAdmin(address indexed admin, bool indexed enabled)
ConfigOperator
event ConfigOperator(address indexed operator, bool indexed enabled)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetAdmin
event SetAdmin(address adminAccount)
SetFee
event SetFee(uint256 indexed srcChainID, uint256 indexed destChainID, uint256 contractFee, uint256 agentFee)
SetTokenPairFee
event SetTokenPairFee(uint256 indexed tokenPairID, uint256 contractFee)
Upgraded
event Upgraded(address indexed implementation)
WithdrawHistoryFeeLogger
event WithdrawHistoryFeeLogger(bytes32 indexed smgID, uint256 indexed timeStamp, address indexed receiver, uint256 fee)
errors
No errors.
creation bytecode
0x60806040526201fa406011556102586012556014805460ff60a01b1916905534801561002a57600080fd5b506013805433610100026001600160a81b0319909116176001179055614689806100556000396000f3fe60806040526004361061031e5760003560e01c806373e29b0d116101ab578063bbf485ab116100f7578063e7c00f6e11610095578063f0baef521161006f578063f0baef5214610a1a578063f23a6e6114610a3a578063f495438714610a66578063f851a44014610a865761032d565b8063e7c00f6e146109cf578063e92e2c1b146109e4578063ed8d47e6146109fa5761032d565b8063d4ee1d90116100d1578063d4ee1d901461095c578063d52012bc1461097c578063dd27b6cd1461099c578063e02dee8c146109bc5761032d565b8063bbf485ab146108ed578063bc197c811461090d578063be5212a81461093c5761032d565b8063926731ea11610164578063a8b382051161013e578063a8b382051461088d578063b179e1e7146108a3578063b64ed6db146108b9578063b9b8af0b146108cc5761032d565b8063926731ea1461082d578063a3d1e3811461084d578063a6f9dae11461086d5761032d565b806373e29b0d1461072f57806373fa58f51461078657806379ba5097146107a65780638061babf146107bb5780638da5cb5b146107db57806390116916146108005761032d565b8063392a62b91161026a57806354c0de4a116102235780636d70f7ae116101fd5780636d70f7ae1461069d578063704b6c02146106cd578063715018a6146106ed578063715f250c146107025761032d565b806354c0de4a1461062b5780635c60da1b1461064b5780635dd939ba1461067d5761032d565b8063392a62b91461056b57806341ff1bcc146105985780634cc7125b146105ab5780634fb2e45d146105cb57806350cc6707146105eb578063536686a91461060b5761032d565b8063213a2596116102d75780632b26a6bf116102b15780632b26a6bf146104de5780632e96be19146104fe57806333b57a401461051e578063361b31bf1461053e5761032d565b8063213a25961461046b57806324d7806c1461048b578063257011b6146104cb5761032d565b806301f4d28d146103355780630a72b1ab1461035d5780630d3adbac1461037d5780630ec61b7914610393578063150b7a0214610407578063159982f01461044b5761032d565b3661032d5761032b610aa6565b005b61032b610aa6565b34801561034157600080fd5b5061034a610b30565b6040519081526020015b60405180910390f35b34801561036957600080fd5b5061032b61037836600461311d565b610b4a565b34801561038957600080fd5b5061034a601b5481565b34801561039f57600080fd5b506103fa6103ae36600461318e565b604080518082018252600080825260208083018281528535808452600f835285842096830135808552968352858420548552835260108252848320958352949052919091205490915290565b60405161035491906131a6565b34801561041357600080fd5b50610432610422366004613280565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610354565b34801561045757600080fd5b5061034a6104663660046132eb565b610c3e565b34801561047757600080fd5b5061032b610486366004613372565b610cb1565b34801561049757600080fd5b506104bb6104a63660046133b3565b601c6020526000908152604090205460ff1681565b6040519015158152602001610354565b61032b6104d9366004613411565b610e07565b3480156104ea57600080fd5b5061032b6104f9366004613471565b61103f565b34801561050a57600080fd5b5061032b610519366004613471565b6110a2565b34801561052a57600080fd5b5061032b610539366004613498565b6110d6565b34801561054a57600080fd5b5061055e610559366004613372565b611188565b60405161035491906134d1565b34801561057757600080fd5b5061034a610586366004613471565b60009081526018602052604090205490565b61032b6105a6366004613528565b611300565b3480156105b757600080fd5b5061032b6105c63660046135a4565b61154f565b3480156105d757600080fd5b5061032b6105e63660046133b3565b611628565b3480156105f757600080fd5b5061032b61060636600461360f565b611714565b34801561061757600080fd5b5061032b6106263660046136f9565b611958565b34801561063757600080fd5b5061032b61064636600461372e565b611ad3565b34801561065757600080fd5b506015546001600160a01b03165b6040516001600160a01b039091168152602001610354565b34801561068957600080fd5b5061032b610698366004613498565b611bcc565b3480156106a957600080fd5b506104bb6106b83660046133b3565b601d6020526000908152604090205460ff1681565b3480156106d957600080fd5b5061032b6106e83660046133b3565b611c4f565b3480156106f957600080fd5b5061032b611cd2565b34801561070e57600080fd5b5061034a61071d366004613471565b6000908152600e602052604090205490565b34801561073b57600080fd5b50600a54600b54600c54600954600d54604080516001600160a01b0396871681529486166020860152928516928401929092528316606083015291909116608082015260a001610354565b34801561079257600080fd5b5061032b6107a136600461360f565b611d14565b3480156107b257600080fd5b5061032b611e1b565b3480156107c757600080fd5b5061034a6107d63660046135a4565b611e59565b3480156107e757600080fd5b506013546106659061010090046001600160a01b031681565b34801561080c57600080fd5b5061082061081b3660046136f9565b611ed9565b604051610354919061377b565b34801561083957600080fd5b5061032b61084836600461378e565b611f83565b34801561085957600080fd5b5061032b610868366004613880565b612058565b34801561087957600080fd5b5061032b6108883660046133b3565b612180565b34801561089957600080fd5b5061034a60115481565b3480156108af57600080fd5b5061034a60165481565b61032b6108c7366004613950565b6121d1565b3480156108d857600080fd5b506014546104bb90600160a01b900460ff1681565b3480156108f957600080fd5b5061032b6109083660046139eb565b61246b565b34801561091957600080fd5b50610432610928366004613ae1565b63bc197c8160e01b98975050505050505050565b34801561094857600080fd5b5061034a610957366004613b9f565b61258e565b34801561096857600080fd5b50601454610665906001600160a01b031681565b34801561098857600080fd5b5061032b610997366004613bc1565b612633565b3480156109a857600080fd5b5061032b6109b7366004613471565b612870565b61032b6109ca366004613c35565b6128d3565b3480156109db57600080fd5b5061034a612b33565b3480156109f057600080fd5b5061034a60125481565b348015610a0657600080fd5b5061032b610a15366004613471565b612b4c565b348015610a2657600080fd5b5061032b610a35366004613b9f565b612bbd565b348015610a4657600080fd5b50610432610a55366004613ce3565b63f23a6e6160e01b95945050505050565b348015610a7257600080fd5b5061032b610a81366004613d4b565b612c86565b348015610a9257600080fd5b50601754610665906001600160a01b031681565b6015546001600160a01b031680610b045760405162461bcd60e51b815260206004820152601f60248201527f696d706c656d656e746174696f6e20636f6e7472616374206e6f74207365740060448201526064015b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610b25578184f35b8184fd5b5050505050565b6000601a54600003610b4357506108fc90565b50601a5490565b60135461010090046001600160a01b03163314610b795760405162461bcd60e51b8152600401610afb90613d68565b6001600160a01b03851615801590610b9957506001600160a01b03841615155b8015610bad57506001600160a01b03811615155b610bf05760405162461bcd60e51b815260206004820152601460248201527314185c985b595d195c881a5cc81a5b9d985b1a5960621b6044820152606401610afb565b600b80546001600160a01b03199081166001600160a01b0396871617909155600a8054821696861696909617909555600c805486169385169390931790925550600d80549093169116179055565b6000601b54600103610c565750805160209091012090565b600282604051610c669190613daf565b602060405180830381855afa158015610c83573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610ca69190613dcb565b92915050565b919050565b336000908152601d602052604090205460ff1680610cde5750336000908152601c602052604090205460ff165b80610cf357506017546001600160a01b031633145b80610d0d575060135461010090046001600160a01b031633145b610d295760405162461bcd60e51b8152600401610afb90613de4565b60005b81811015610e0257828282818110610d4657610d46613e0a565b9050604002016020013560186000858585818110610d6657610d66613e0a565b90506040020160000135815260200190815260200160002081905550828282818110610d9457610d94613e0a565b905060400201600001357fdfa3e1a2556a2caf7af0a1cb98a9eed056ae433c4e109e3398edff9863d45bf5848484818110610dd157610dd1613e0a565b90506040020160200135604051610dea91815260200190565b60405180910390a2610dfb81613e36565b9050610d2c565b505050565b601454600160a01b900460ff1615610e315760405162461bcd60e51b8152600401610afb90613e4f565b60135460ff16610e535760405162461bcd60e51b8152600401610afb90613e86565b6013805460ff19169055600b54604051634af46b4560e11b8152600481018790528691600091829182916001600160a01b03909116906395e8d68a90602401606060405180830381865afa158015610eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed39190613ece565b9194509250905060ff83166005148015610eed5750814210155b8015610ef95750804211155b610f155760405162461bcd60e51b8152600401610afb90613f03565b6000610f1f612cd3565b905060006040518061010001604052808c81526020018b81526020018a81526020016016548152602001601860008d8152602001908152602001600020548152602001610f6a610b30565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506001600160a01b038416602090910152604051638fd59dc760e01b815290915073be201985b711d44bbe0e77770a58c922135aa17d90638fd59dc790610ff5906005908590600401613f58565b60006040518083038186803b15801561100d57600080fd5b505af4158015611021573d6000803e3d6000fd5b50506013805460ff1916600117905550505050505050505050505050565b336000908152601c602052604090205460ff168061106757506017546001600160a01b031633145b80611081575060135461010090046001600160a01b031633145b61109d5760405162461bcd60e51b8152600401610afb90613fdc565b601955565b60135461010090046001600160a01b031633146110d15760405162461bcd60e51b8152600401610afb90613d68565b601b55565b336000908152601c602052604090205460ff16806110fe57506017546001600160a01b031633145b80611118575060135461010090046001600160a01b031633145b6111345760405162461bcd60e51b8152600401610afb90613fdc565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917f0ba00283699e8a51615f49e891f96d655cb66dee99cdab7fd2dca130c251818291a35050565b6060816001600160401b038111156111a2576111a26131bd565b6040519080825280602002602001820160405280156111e757816020015b60408051808201909152600080825260208201528152602001906001900390816111c05790505b50905060005b828110156112f957600f600085858481811061120b5761120b613e0a565b905060400201600001358152602001908152602001600020600085858481811061123757611237613e0a565b9050604002016020013581526020019081526020016000205482828151811061126257611262613e0a565b6020908102919091010151526010600085858481811061128457611284613e0a565b90506040020160000135815260200190815260200160002060008585848181106112b0576112b0613e0a565b905060400201602001358152602001908152602001600020548282815181106112db576112db613e0a565b60209081029190910181015101526112f281613e36565b90506111ed565b5092915050565b601454600160a01b900460ff161561132a5760405162461bcd60e51b8152600401610afb90613e4f565b60135460ff1661134c5760405162461bcd60e51b8152600401610afb90613e86565b6013805460ff19169055600b54604051634af46b4560e11b8152600481018990528891600091829182916001600160a01b03909116906395e8d68a90602401606060405180830381865afa1580156113a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cc9190613ece565b9194509250905060ff831660051480156113e65750814210155b80156113f25750804211155b61140e5760405162461bcd60e51b8152600401610afb90613f03565b6000611418612cd3565b905060006040518061014001604052808e81526020018d81526020018c815260200160165481526020018b8152602001601860008f8152602001908152602001600020548152602001611469610b30565b81526020018a6001600160a01b0316815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506001600160a01b0384166020909101526040516301f4bd6760e61b815290915073be201985b711d44bbe0e77770a58c922135aa17d90637d2f59c090611503906005908590600401613fff565b60006040518083038186803b15801561151b57600080fd5b505af415801561152f573d6000803e3d6000fd5b50506013805460ff19166001179055505050505050505050505050505050565b336000908152601c602052604090205460ff168061157757506017546001600160a01b031633145b80611591575060135461010090046001600160a01b031633145b6115ad5760405162461bcd60e51b8152600401610afb90613fdc565b611622600085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250612d0692505050565b50505050565b60135461010090046001600160a01b031633146116575760405162461bcd60e51b8152600401610afb90613d68565b6001600160a01b0381166116ad5760405162461bcd60e51b815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f20616464726573730000006044820152606401610afb565b6013546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b601454600160a01b900460ff161561173e5760405162461bcd60e51b8152600401610afb90613e4f565b6000606061174b8b612d49565b60408051610100810182528f8152602081018f90529081018d9052606081018c9052608081018b90526001600160a01b03808b1660a083015289811660c0830152600c54939550919350600092909160e083019116156117b657600c546001600160a01b03166117c8565b60135461010090046001600160a01b03165b6001600160a01b0390811690915260408051633c394fd560e21b815260056004820152835160248201526020840151604482015290830151606482015260608301516084820152608083015160a482015260a0830151821660c482015260c0830151821660e482015260e083015190911661010482015290915073be201985b711d44bbe0e77770a58c922135aa17d9063f0e53f5490610124015b60006040518083038186803b15801561187b57600080fd5b505af415801561188f573d6000803e3d6000fd5b5050505060006119026016548f8e8e8e8e8e6040516020016118ee979695949392919096875260208701959095526040860193909352606085019190915260808401526001600160a01b0390811660a08401521660c082015260e00190565b604051602081830303815290604052610c3e565b90506119488482858a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250612e25915050565b5050505050505050505050505050565b600c5460009081906001600160a01b031680611981575060135461010090046001600160a01b03165b6001600160a01b0381166119cd5760405162461bcd60e51b8152602060048201526013602482015272696e76616c696420736d6746656550726f787960681b6044820152606401610afb565b60005b84811015611aba57600e60008787848181106119ee576119ee613e0a565b90506020020135815260200190815260200160002054925060056009016000878784818110611a1f57611a1f613e0a565b90506020020135815260200190815260200160002060009055611a4b8385612f3390919063ffffffff16565b9350816001600160a01b031642878784818110611a6a57611a6a613e0a565b905060200201357ff12b3f379096849c585fc75843457b18f02c980d39f9462c0ccefc992f2cb87b86604051611aa291815260200190565b60405180910390a4611ab381613e36565b90506119d0565b508215610b2957610b298184611ace610b30565b612f46565b336000908152601d602052604090205460ff1680611b005750336000908152601c602052604090205460ff165b80611b1557506017546001600160a01b031633145b80611b2f575060135461010090046001600160a01b031633145b611b4b5760405162461bcd60e51b8152600401610afb90613de4565b80356000818152600f60209081526040808320828601358085529083528184208287013590819055858552601084528285208286528452938290206060870135908190558251948552928401929092529092917f2c40e30353ae48a032fd20f1fece20031c1b80a2bc8512a2c172ff4de2e59519910160405180910390a350565b60135461010090046001600160a01b03163314611bfb5760405162461bcd60e51b8152600401610afb90613d68565b6001600160a01b0382166000818152601c6020526040808220805460ff191685151590811790915590519092917fb0952cae2bb8b955d827c964f844b30447210f1f21be8c009772a3044a76534491a35050565b60135461010090046001600160a01b03163314611c7e5760405162461bcd60e51b8152600401610afb90613d68565b601780546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a19060200160405180910390a150565b60135461010090046001600160a01b03163314611d015760405162461bcd60e51b8152600401610afb90613d68565b60138054610100600160a81b0319169055565b601454600160a01b900460ff1615611d3e5760405162461bcd60e51b8152600401610afb90613e4f565b60006060611d4b8b612d49565b809250819350505060006040518061012001604052808e81526020018d81526020018c81526020018b81526020018a8152602001611d87610b30565b81526001600160a01b03808b1660208301528981166040830152600c546060909201911615611dc157600c546001600160a01b0316611dd3565b60135461010090046001600160a01b03165b6001600160a01b0316905260405163135122a560e21b815290915073be201985b711d44bbe0e77770a58c922135aa17d90634d448a94906118639060059085906004016140b0565b6014546001600160a01b03163303611e5757601454601380546001600160a01b0390921661010002610100600160a81b03199092169190911790555b565b6000611ed0600086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061307092505050565b95945050505050565b6060816001600160401b03811115611ef357611ef36131bd565b604051908082528060200260200182016040528015611f1c578160200160208202803683370190505b50905060005b828110156112f95760186000858584818110611f4057611f40613e0a565b90506020020135815260200190815260200160002054828281518110611f6857611f68613e0a565b6020908102919091010152611f7c81613e36565b9050611f22565b336000908152601c602052604090205460ff1680611fab57506017546001600160a01b031633145b80611fc5575060135461010090046001600160a01b031633145b611fe15760405162461bcd60e51b8152600401610afb90613fdc565b610b29600086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152508792506130b8915050565b601454600160a01b900460ff16156120825760405162461bcd60e51b8152600401610afb90613e4f565b6000606061208f8a612d49565b6040805160e0810182528e8152602081018e90528082018d9052606081018c9052608081018b90526001600160a01b03808b1660a0830152891660c08201529051630bc60e7f60e21b81529294509092509073b30778550a959c207601d77ff13fe38a5abb254690632f1839fc9061210e906005908590600401614140565b60006040518083038186803b15801561212657600080fd5b505af415801561213a573d6000803e3d6000fd5b5050505060006121626016548e8d8d8d8d8d6040516020016118ee97969594939291906141cf565b90506121718482858989612e25565b50505050505050505050505050565b60135461010090046001600160a01b031633146121af5760405162461bcd60e51b8152600401610afb90613d68565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b601454600160a01b900460ff16156121fb5760405162461bcd60e51b8152600401610afb90613e4f565b60135460ff1661221d5760405162461bcd60e51b8152600401610afb90613e86565b6013805460ff19169055600b54604051634af46b4560e11b8152600481018790528691600091829182916001600160a01b03909116906395e8d68a90602401606060405180830381865afa158015612279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229d9190613ece565b9194509250905060ff831660051480156122b75750814210155b80156122c35750804211155b6122df5760405162461bcd60e51b8152600401610afb90613f03565b600087511180156122f857506122f3612b33565b875111155b6123355760405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c840d8cadccee8d60931b6044820152606401610afb565b85518751146123785760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610afb565b60006040518061012001604052808b81526020018a81526020018981526020018881526020016016548152602001601860008c81526020019081526020016000205481526020016123c7610b30565b81526020018781526020016123da612cd3565b6001600160a01b031690526040516322a0e81760e21b815290915073b30778550a959c207601d77ff13fe38a5abb254690638a83a05c9061242290600590859060040161422e565b60006040518083038186803b15801561243a57600080fd5b505af415801561244e573d6000803e3d6000fd5b50506013805460ff19166001179055505050505050505050505050565b601454600160a01b900460ff16156124955760405162461bcd60e51b8152600401610afb90613e4f565b600060606124a28b612d49565b60408051610100810182528f8152602081018f90528082018e9052606081018d9052608081018c905260a081018b90526001600160a01b03808b1660c0830152891660e082015290516343966d8360e11b81529294509092509073b30778550a959c207601d77ff13fe38a5abb25469063872cdb06906125299060059085906004016142e5565b60006040518083038186803b15801561254157600080fd5b505af4158015612555573d6000803e3d6000fd5b50505050600061257f6016548f8e8e8e8e8e8e6040516020016118ee98979695949392919061439c565b90506119488482858989612e25565b6000828152601860205260408082205460165491516337e99c6160e21b815260056004820152602481018690526044810191909152606481019190915260848101839052819073b30778550a959c207601d77ff13fe38a5abb25469063dfa671849060a4016040805180830381865af415801561260f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed09190614413565b336000908152601d602052604090205460ff16806126605750336000908152601c602052604090205460ff165b8061267557506017546001600160a01b031633145b8061268f575060135461010090046001600160a01b031633145b6126ab5760405162461bcd60e51b8152600401610afb90613de4565b60005b81811015610e02578282828181106126c8576126c8613e0a565b905060800201604001356005600a0160008585858181106126eb576126eb613e0a565b905060800201600001358152602001908152602001600020600085858581811061271757612717613e0a565b9050608002016020013581526020019081526020016000208190555082828281811061274557612745613e0a565b905060800201606001356005600b01600085858581811061276857612768613e0a565b905060800201600001358152602001908152602001600020600085858581811061279457612794613e0a565b905060800201602001358152602001908152602001600020819055508282828181106127c2576127c2613e0a565b905060800201602001358383838181106127de576127de613e0a565b905060800201600001357f2c40e30353ae48a032fd20f1fece20031c1b80a2bc8512a2c172ff4de2e5951985858581811061281b5761281b613e0a565b9050608002016040013586868681811061283757612837613e0a565b90506080020160600135604051612858929190918252602082015260400190565b60405180910390a361286981613e36565b90506126ae565b336000908152601c602052604090205460ff168061289857506017546001600160a01b031633145b806128b2575060135461010090046001600160a01b031633145b6128ce5760405162461bcd60e51b8152600401610afb90613fdc565b601a55565b601454600160a01b900460ff16156128fd5760405162461bcd60e51b8152600401610afb90613e4f565b60135460ff1661291f5760405162461bcd60e51b8152600401610afb90613e86565b6013805460ff19169055600b54604051634af46b4560e11b8152600481018890528791600091829182916001600160a01b03909116906395e8d68a90602401606060405180830381865afa15801561297b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299f9190613ece565b9194509250905060ff831660051480156129b95750814210155b80156129c55750804211155b6129e15760405162461bcd60e51b8152600401610afb90613f03565b600088511180156129fa57506129f5612b33565b885111155b612a375760405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c840d8cadccee8d60931b6044820152606401610afb565b8651885114612a7a5760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610afb565b60006040518061014001604052808c81526020018b81526020018a81526020018981526020016016548152602001601860008d8152602001908152602001600020548152602001612ac9610b30565b8152602001886001600160a01b03168152602001878152602001612aeb612cd3565b6001600160a01b0316905260405163032a0d7760e11b815290915073b30778550a959c207601d77ff13fe38a5abb2546906306541aee90610ff5906005908590600401614441565b6000601954600003612b455750601490565b5060195490565b336000908152601c602052604090205460ff1680612b7457506017546001600160a01b031633145b80612b8e575060135461010090046001600160a01b031633145b612baa5760405162461bcd60e51b8152600401610afb90613fdc565b601654600003612bba5760168190555b50565b336000908152601d602052604090205460ff1680612bea5750336000908152601c602052604090205460ff165b80612bff57506017546001600160a01b031633145b80612c19575060135461010090046001600160a01b031633145b612c355760405162461bcd60e51b8152600401610afb90613de4565b600082815260186020526040908190208290555182907fdfa3e1a2556a2caf7af0a1cb98a9eed056ae433c4e109e3398edff9863d45bf590612c7a9084815260200190565b60405180910390a25050565b60135461010090046001600160a01b03163314612cb55760405162461bcd60e51b8152600401610afb90613d68565b60148054911515600160a01b0260ff60a01b19909216919091179055565b600c546000906001600160a01b03168015612cee5780612d00565b60135461010090046001600160a01b03165b91505090565b6040518390612d16908490613daf565b908152602001604051809103902081604051612d329190613daf565b908152602001604051809103902060009055505050565b600b546040516344cefb6960e01b8152600481018390526000916060918391829182916001600160a01b0316906344cefb6990602401600060405180830381865afa158015612d9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612dc4919081019061455b565b949e50919c50969a50985090965060059550612de1945050505050565b60ff168360ff16148015612df55750814210155b8015612e015750804211155b612e1d5760405162461bcd60e51b8152600401610afb90613f03565b505050915091565b6020838101516040808601518584015186830151600d548451631161eded60e21b8152600481018d90526024810189905260448101879052606481018590526084810184905260a4810183905260c481018c9052945195969395929491936001600160a01b0390911692634587b7b49260e480820193929182900301816000875af1158015612eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edc9190614623565b612f285760405162461bcd60e51b815260206004820152601d60248201527f5369676e617475726520766572696669636174696f6e206661696c65640000006044820152606401610afb565b505050505050505050565b6000612f3f8284614640565b9392505050565b81471015612fa25760405162461bcd60e51b815260206004820152602360248201527f45746865725472616e736665723a20696e73756666696369656e742062616c616044820152626e636560e81b6064820152608401610afb565b6000836001600160a01b0316838390604051600060405180830381858888f193505050503d8060008114612ff2576040519150601f19603f3d011682016040523d82523d6000602084013e612ff7565b606091505b5050905080611622576040805162461bcd60e51b81526020600482015260248101919091527f45746865725472616e736665723a20756e61626c6520746f2073656e6420766160448201527f6c75652c20726563697069656e74206d617920686176652072657665727465646064820152608401610afb565b600083600001836040516130849190613daf565b9081526020016040518091039020826040516130a09190613daf565b90815260200160405180910390205490509392505050565b8084600001846040516130cb9190613daf565b9081526020016040518091039020836040516130e79190613daf565b9081526040519081900360200190205550505050565b6001600160a01b0381168114612bba57600080fd5b8035610cac816130fd565b600080600080600060a0868803121561313557600080fd5b8535613140816130fd565b94506020860135613150816130fd565b93506040860135613160816130fd565b92506060860135613170816130fd565b91506080860135613180816130fd565b809150509295509295909350565b6000604082840312156131a057600080fd5b50919050565b815181526020808301519082015260408101610ca6565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156131fb576131fb6131bd565b604052919050565b60006001600160401b0382111561321c5761321c6131bd565b50601f01601f191660200190565b600082601f83011261323b57600080fd5b813561324e61324982613203565b6131d3565b81815284602083860101111561326357600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561329657600080fd5b84356132a1816130fd565b935060208501356132b1816130fd565b92506040850135915060608501356001600160401b038111156132d357600080fd5b6132df8782880161322a565b91505092959194509250565b6000602082840312156132fd57600080fd5b81356001600160401b0381111561331357600080fd5b61331f8482850161322a565b949350505050565b60008083601f84011261333957600080fd5b5081356001600160401b0381111561335057600080fd5b6020830191508360208260061b850101111561336b57600080fd5b9250929050565b6000806020838503121561338557600080fd5b82356001600160401b0381111561339b57600080fd5b6133a785828601613327565b90969095509350505050565b6000602082840312156133c557600080fd5b8135612f3f816130fd565b60008083601f8401126133e257600080fd5b5081356001600160401b038111156133f957600080fd5b60208301915083602082850101111561336b57600080fd5b60008060008060006080868803121561342957600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561345457600080fd5b613460888289016133d0565b969995985093965092949392505050565b60006020828403121561348357600080fd5b5035919050565b8015158114612bba57600080fd5b600080604083850312156134ab57600080fd5b82356134b6816130fd565b915060208301356134c68161348a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b8281101561351b5761350b84835180518252602090810151910152565b92840192908501906001016134ee565b5091979650505050505050565b600080600080600080600060c0888a03121561354357600080fd5b87359650602088013595506040880135945060608801359350608088013561356a816130fd565b925060a08801356001600160401b0381111561358557600080fd5b6135918a828b016133d0565b989b979a50959850939692959293505050565b600080600080604085870312156135ba57600080fd5b84356001600160401b03808211156135d157600080fd5b6135dd888389016133d0565b909650945060208701359150808211156135f657600080fd5b50613603878288016133d0565b95989497509550505050565b6000806000806000806000806000806101208b8d03121561362f57600080fd5b8a35995060208b0135985060408b0135975060608b0135965060808b0135955060a08b013561365d816130fd565b945060c08b013561366d816130fd565b935060e08b01356001600160401b0381111561368857600080fd5b6136948d828e016133d0565b915080945050809250506101008b013590509295989b9194979a5092959850565b60008083601f8401126136c757600080fd5b5081356001600160401b038111156136de57600080fd5b6020830191508360208260051b850101111561336b57600080fd5b6000806020838503121561370c57600080fd5b82356001600160401b0381111561372257600080fd5b6133a7858286016136b5565b6000608082840312156131a057600080fd5b600081518084526020808501945080840160005b8381101561377057815187529582019590820190600101613754565b509495945050505050565b602081526000612f3f6020830184613740565b6000806000806000606086880312156137a657600080fd5b85356001600160401b03808211156137bd57600080fd5b6137c989838a016133d0565b909750955060208801359150808211156137e257600080fd5b506137ef888289016133d0565b96999598509660400135949350505050565b600082601f83011261381257600080fd5b813560206001600160401b0382111561382d5761382d6131bd565b8160051b61383c8282016131d3565b928352848101820192828101908785111561385657600080fd5b83870192505b848310156138755782358252918301919083019061385c565b979650505050505050565b60008060008060008060008060006101208a8c03121561389f57600080fd5b8935985060208a0135975060408a0135965060608a01356001600160401b03808211156138cb57600080fd5b6138d78d838e01613801565b975060808c01359150808211156138ed57600080fd5b6138f98d838e01613801565b965061390760a08d01613112565b955061391560c08d01613112565b945060e08c013591508082111561392b57600080fd5b506139388c828d0161322a565b9250506101008a013590509295985092959850929598565b600080600080600060a0868803121561396857600080fd5b853594506020860135935060408601356001600160401b038082111561398d57600080fd5b61399989838a01613801565b945060608801359150808211156139af57600080fd5b6139bb89838a01613801565b935060808801359150808211156139d157600080fd5b506139de8882890161322a565b9150509295509295909350565b6000806000806000806000806000806101408b8d031215613a0b57600080fd5b8a35995060208b0135985060408b0135975060608b01356001600160401b0380821115613a3757600080fd5b613a438e838f01613801565b985060808d0135915080821115613a5957600080fd5b613a658e838f01613801565b975060a08d0135915080821115613a7b57600080fd5b613a878e838f0161322a565b9650613a9560c08e01613112565b9550613aa360e08e01613112565b94506101008d0135915080821115613aba57600080fd5b50613ac78d828e0161322a565b9250506101208b013590509295989b9194979a5092959850565b60008060008060008060008060a0898b031215613afd57600080fd5b8835613b08816130fd565b97506020890135613b18816130fd565b965060408901356001600160401b0380821115613b3457600080fd5b613b408c838d016136b5565b909850965060608b0135915080821115613b5957600080fd5b613b658c838d016136b5565b909650945060808b0135915080821115613b7e57600080fd5b50613b8b8b828c016133d0565b999c989b5096995094979396929594505050565b60008060408385031215613bb257600080fd5b50508035926020909101359150565b60008060208385031215613bd457600080fd5b82356001600160401b0380821115613beb57600080fd5b818501915085601f830112613bff57600080fd5b813581811115613c0e57600080fd5b8660208260071b8501011115613c2357600080fd5b60209290920196919550909350505050565b60008060008060008060c08789031215613c4e57600080fd5b863595506020870135945060408701356001600160401b0380821115613c7357600080fd5b613c7f8a838b01613801565b95506060890135915080821115613c9557600080fd5b613ca18a838b01613801565b945060808901359150613cb3826130fd565b90925060a08801359080821115613cc957600080fd5b50613cd689828a0161322a565b9150509295509295509295565b600080600080600060a08688031215613cfb57600080fd5b8535613d06816130fd565b94506020860135613d16816130fd565b9350604086013592506060860135915060808601356001600160401b03811115613d3f57600080fd5b6139de8882890161322a565b600060208284031215613d5d57600080fd5b8135612f3f8161348a565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b60005b83811015613da6578181015183820152602001613d8e565b50506000910152565b60008251613dc1818460208701613d8b565b9190910192915050565b600060208284031215613ddd57600080fd5b5051919050565b6020808252600c908201526b3737ba1037b832b930ba37b960a11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613e4857613e48613e20565b5060010190565b60208082526018908201527f536d61727420636f6e74726163742069732068616c7465640000000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b805160ff81168114610cac57600080fd5b600080600060608486031215613ee357600080fd5b613eec84613ebd565b925060208401519150604084015190509250925092565b6020808252600f908201526e504b206973206e6f7420726561647960881b604082015260600190565b60008151808452613f44816020860160208601613d8b565b601f01601f19169290920160200192915050565b82815260406020820152815160408201526020820151606082015260408201516080820152606082015160a0820152608082015160c082015260a082015160e0820152600060c0830151610100808185015250613fb9610140840182613f2c565b60e094909401516001600160a01b03166101209390930192909252509092915050565b6020808252600990820152683737ba1030b236b4b760b91b604082015260600190565b82815260406020820152815160408201526020820151606082015260408201516080820152606082015160a0820152608082015160c082015260a082015160e0820152600060c0830151610100818185015260e0850151915061012061406f818601846001600160a01b03169052565b8186015192506101409150818286015261408d610180860184613f2c565b908601516001600160a01b03811661016087015290925090505b50949350505050565b60006101408201905083825282516020830152602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160018060a01b0380821660e085015260e085015191506101008183168186015280860151925050506141386101208401826001600160a01b03169052565b509392505050565b828152604060208201528151604082015260208201516060820152604082015160808201526000606083015160e060a0840152614181610120840182613740565b90506080840151603f198483030160c085015261419e8282613740565b60a08601516001600160a01b0390811660e087015260c0909601519095166101009094019390935250919392505050565b87815286602082015285604082015260e0606082015260006141f460e0830187613740565b82810360808401526142068187613740565b6001600160a01b0395861660a08501529390941660c090920191909152509695505050505050565b82815260406020820152815160408201526020820151606082015260006040830151610120806080850152614267610160850183613740565b91506060850151603f19808685030160a08701526142858483613740565b9350608087015160c087015260a087015160e087015260c08701519150610100828188015260e088015192508187860301848801526142c48584613f2c565b94508088015193505050506140a76101408501826001600160a01b03169052565b82815260406020820152815160408201526020820151606082015260408201516080820152600060608301516101008060a0850152614328610140850183613740565b91506080850151603f19808685030160c08701526143468483613740565b935060a08701519150808685030160e0870152506143648382613f2c565b92505060c0850151614380828601826001600160a01b03169052565b505060e08401516001600160a01b0381166101208501526140a7565b60006101008a83528960208401528860408401528060608401526143c281840189613740565b905082810360808401526143d68188613740565b905082810360a08401526143ea8187613f2c565b6001600160a01b0395861660c08501529390941660e09092019190915250979650505050505050565b6000806040838503121561442657600080fd5b8251614431816130fd565b6020939093015192949293505050565b8281526040602082015281516040820152602082015160608201526000604083015161014080608085015261447a610180850183613740565b91506060850151603f19808685030160a08701526144988483613740565b9350608087015160c087015260a087015160e087015260c08701519150610100828188015260e088015192506101206144db818901856001600160a01b03169052565b8189015193508288870301858901526144f48685613f2c565b9550808901519450505050506140a76101608501826001600160a01b03169052565b600082601f83011261452757600080fd5b815161453561324982613203565b81815284602083860101111561454a57600080fd5b61331f826020830160208701613d8b565b60008060008060008060008060008060006101608c8e03121561457d57600080fd5b8b519a5061458d60208d01613ebd565b995060408c0151985060608c0151975060808c0151965060a08c0151955060c08c0151945060e08c01516001600160401b038111156145cb57600080fd5b6145d78e828f01614516565b9450506101008c01516001600160401b038111156145f457600080fd5b6146008e828f01614516565b9350506101208c015191506101408c015190509295989b509295989b9093969950565b60006020828403121561463557600080fd5b8151612f3f8161348a565b80820180821115610ca657610ca6613e2056fea2646970667358221220adecabdc4043e8f005ce9c9cd57bb26f3e802a10839df42a468a237e75ab806964736f6c63430008120033