0 txs
0 calls
constructor
constructor(address[] _adapters, address[] _trustedTokens, address _feeClaimer, address _wrapped_native)
functions
ADAPTERS
viewfunction ADAPTERS(uint256) view returns (address)
adaptersCount
viewfunction adaptersCount() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
FEE_CLAIMER
viewfunction FEE_CLAIMER() view returns (address)
FEE_DENOMINATOR
viewfunction FEE_DENOMINATOR() view returns (uint256)
findBestPath
viewfunction findBestPath(uint256 _amountIn, address _tokenIn, address _tokenOut, address[] _trustedTokens, uint256 _maxSteps) view returns (tuple)
findBestPathWithGas
viewfunction findBestPathWithGas(uint256 _amountIn, address _tokenIn, address _tokenOut, address[] _trustedTokens, uint256 _maxSteps, uint256 _gasPrice) view returns (tuple)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MAINTAINER_ROLE
viewfunction MAINTAINER_ROLE() view returns (bytes32)
MIN_FEE
viewfunction MIN_FEE() view returns (uint256)
NAME
viewfunction NAME() view returns (string)
NATIVE
viewfunction NATIVE() view returns (address)
queryAdapter
viewfunction queryAdapter(uint256 _amountIn, address _tokenIn, address _tokenOut, uint8 _index) view returns (uint256)
queryNoSplit
viewfunction queryNoSplit(uint256 _amountIn, address _tokenIn, address _tokenOut, uint8[] _options) view returns (tuple)
queryNoSplit
viewfunction queryNoSplit(uint256 _amountIn, address _tokenIn, address _tokenOut) view returns (tuple)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
TRUSTED_TOKENS
viewfunction TRUSTED_TOKENS(uint256) view returns (address)
trustedTokensCount
viewfunction trustedTokensCount() view returns (uint256)
WNATIVE
viewfunction WNATIVE() view returns (address)
addMaintainer
nonpayablefunction addMaintainer(address addedMaintainer)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
recoverERC20
nonpayablefunction recoverERC20(address _tokenAddress, uint256 _tokenAmount)
recoverNative
nonpayablefunction recoverNative(uint256 _amount)
removeMaintainer
nonpayablefunction removeMaintainer(address removedMaintainer)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAdapters
nonpayablefunction setAdapters(address[] _adapters)
setAllowanceForWrapping
nonpayablefunction setAllowanceForWrapping(address _wnative)
setFeeClaimer
nonpayablefunction setFeeClaimer(address _claimer)
setMinFee
nonpayablefunction setMinFee(uint256 _fee)
setTrustedTokens
nonpayablefunction setTrustedTokens(address[] _trustedTokens)
swapNoSplit
nonpayablefunction swapNoSplit(tuple _trade, uint256 _fee, address _to)
swapNoSplitFromETH
payablefunction swapNoSplitFromETH(tuple _trade, uint256 _fee, address _to) payable
swapNoSplitToETH
nonpayablefunction swapNoSplitToETH(tuple _trade, uint256 _fee, address _to)
swapNoSplitToETHWithPermit
nonpayablefunction swapNoSplitToETHWithPermit(tuple _trade, uint256 _fee, address _to, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s)
swapNoSplitWithPermit
nonpayablefunction swapNoSplitWithPermit(tuple _trade, uint256 _fee, address _to, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Recovered
event Recovered(address indexed _asset, uint256 amount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
UpdatedAdapters
event UpdatedAdapters(address[] _newAdapters)
UpdatedFeeClaimer
event UpdatedFeeClaimer(address _oldFeeClaimer, address _newFeeClaimer)
UpdatedMinFee
event UpdatedMinFee(uint256 _oldMinFee, uint256 _newMinFee)
UpdatedTrustedTokens
event UpdatedTrustedTokens(address[] _newTrustedTokens)
YakSwap
event YakSwap(address indexed _tokenIn, address indexed _tokenOut, uint256 _amountIn, uint256 _amountOut)
errors
No errors.
creation bytecode
0x60a06040523462000061575b620000236200001962000262565b92919091620002cb565b604051613be162000d008239608051818181610ecc015281816123b4015281816130ca0152818161311c01528181613234015261329a0152613be190f35b6200006a600080fd5b6200000b565b600080fd5b50634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b03821117620000ae57604052565b620000b862000075565b604052565b90620000d4620000cc60405190565b92836200008c565b565b60209081906001600160401b038111620000ef57020190565b620000f962000075565b020190565b6001600160a01b031690565b90565b6200011881620000fe565b036200007057565b90505190620000d4826200010d565b90929192620001486200014282620000d6565b620000bd565b93818552602080860192028301928184116200018b575b915b8383106200016f5750505050565b602080916200017f848662000120565b81520192019162000161565b62000194600080fd5b6200015f565b906200010a9181601f82011215620001b9575b6020815191016200012f565b620001c2600080fd5b620001ad565b60808183031262000253575b8051620001f59083906001600160401b03811162000244575b83016200019a565b926200010a6200021b84602085015160018060401b03811162000235575b85016200019a565b936200022b816040860162000120565b9360600162000120565b6200023e600080fd5b62000213565b6200024d600080fd5b620001ed565b6200025c600080fd5b620001d4565b62000285620048e1803803806200027981620000bd565b928339810190620001c8565b90919293565b90600019905b9181191691161790565b6200010a6200010a6200010a9290565b90620002bf6200010a620002c7926200029b565b82546200028b565b9055565b906200030f92620003036200030992620002e462000314565b620002f260006001620002ab565b620002fd8762000543565b62000798565b620008e4565b620007ff565b608052565b620000d4620000d462000352565b6200010a60006200029b565b7f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab9590565b620000d4336200036c816200036662000322565b62000376565b620003666200032e565b90620000d491620003ef565b905b600052602052604060002090565b6200010a90620000fe906001600160a01b031682565b6200010a9062000392565b6200010a90620003a8565b906200038490620003b3565b9060ff9062000291565b90620003e76200010a620002c792151590565b8254620003ca565b90620004046200040082846200047e565b1590565b6200040d575050565b6200043360016200042d83600062000426878262000382565b01620003be565b620003d4565b33906200046d62000466620004667f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9590565b92620003b3565b926200047860405190565b600090a4565b6200010a916200049691620004266000918262000382565b5460ff1690565b0190565b15620004a957565b60405162461bcd60e51b815260206004820152602860248201527f4d61696e7461696e61626c653a2043616c6c6572206973206e6f742061206d6160448201526734b73a30b4b732b960c11b6064820152608490fd5b0390fd5b620000d4906200052862000522335b6200051c6200032e565b6200047e565b620004a1565b620000d4906200053881620003b3565b6000199190620009f1565b620000d49062000503565b620000d49062000562620005223362000512565b62000750565b6200057390620000fe565b9052565b906200049d8160209362000568565b90620005a9620005a262000598845190565b8084529260200190565b9260200190565b9060005b818110620005bb5750505090565b909192620005d8620005d1600192865162000577565b9460200190565b929101620005ad565b60208082526200010a9291019062000586565b9160001960089290920291821b911b62000291565b91906200061e6200010a620002c7936200029b565b908354620005f4565b620000d49160009162000609565b81811062000641575050565b8062000651600060019362000627565b0162000635565b90918281106200066757505050565b620000d492906200067f905b92600052602060002090565b908101910162000635565b90620000d491680100000000000000008211620006ae575b80549082815562000658565b620006b862000075565b620006a2565b6200010a9051620000fe565b6001620006fe62000673620006dd855190565b94838060401b03861162000734575b620006f886866200068a565b60200190565b92049160005b838110620007125750505050565b6001906020620007266200010a86620006be565b940193818401550162000704565b6200073e62000075565b620006ec565b90620000d491620006ca565b620000d4907f658ff1688002926d8f426cb10c052ec29003f50042df9652d8613484c1a586476200078060405190565b806200078d8482620005e1565b0390a1600362000744565b620000d4906200054e565b620000d490620007b7620005223362000512565b620000d4907febf7325f48e05e5e38809c69f8b02a7c907ed31d8768e6c2d841b1296a9225fe620007e760405190565b80620007f48482620005e1565b0390a1600462000744565b620000d490620007a3565b620000d4906200081e620005223362000512565b6200088d565b6200010a90620000fe565b6200010a905462000824565b916020620000d4929493620008596040820196600083019062000568565b019062000568565b906001600160a01b039062000291565b90620008856200010a620002c792620003b3565b825462000861565b620000d4906200089e60026200082f565b817fb2c853ac4d80d18d058c43d8018d077a036e542a79acae1647f5ad2a8c76f4e291620008d9620008cf60405190565b928392836200083b565b0390a1600262000871565b620000d4906200080a565b8062000118565b90505190620000d482620008ef565b906200010a9160208183031215620008f65762000920600080fd5b620008f6565b506040513d6000823e3d90fd5b156200093b57565b60405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608490fd5b620009c2620009bc6200010a9263ffffffff1690565b60e01b90565b6001600160e01b03191690565b916020620000d4929493620009ed6040820196600083019062000568565b0152565b62000a6160049262000a51620000d49562000a2660008462000a13826200029b565b841491821562000a67575b505062000933565b62000a3563095ea7b3620009a6565b9262000a4060405190565b9687946020860190815201620009cf565b602082018103825203836200008c565b62000c8f565b909150602062000a7789620003b3565b63dd62ed3e9062000aa862000a8c30620003b3565b9262000ab462000a9b60405190565b9788958694859460e01b90565b8452600484016200083b565b03915afa91821562000b28575b60009262000ae7575b5062000ada62000ade916200029b565b9190565b14843862000a1e565b62000ade91925062000b1762000ada9160203d811162000b20575b62000b0e81836200008c565b81019062000905565b92915062000aca565b503d62000b02565b62000b3262000926565b62000ac1565b6020906200049d906001600160401b03811162000b5957601f01601f191690565b62000b6362000075565b601f01601f191690565b9062000b7d620001428362000b38565b918252565b3d1562000b9f5762000b943d62000b6d565b903d6000602084013e565b606090565b1562000bac57565b60405162461bcd60e51b815280620004ff600482016020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b80151562000118565b90505190620000d48262000bf6565b906200010a916020818303121562000bff5762000c29600080fd5b62000bff565b1562000c3757565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b60009162000c9e8392620003b3565b9082602082019151925af162000cbe62000cb762000b82565b9162000ba4565b805162000cd062000ada60006200029b565b1162000cd95750565b62000cf981602062000ced620000d4945190565b81830101910162000c0e565b62000c2f56fe6080604052600436101561001e575b361561001c5761001c600080fd5b005b60003560e01c8062b99e361461032957806301ffc9a714610320578063248a9ca3146103175780632f2ff15d1461030e57806331ac99201461030557806336568abe146102fc57806338a3374f146102f357806339b85456146102ea5780633a9a4081146102e157806352a52ab0146102d85780636b453c1f146102cf57806376c7a3c7146102c657806376ebe69c146102bd5780637c7a561b146102b4578063809356aa146102ab57806386e450d1146102a25780638980f11f146102995780638bb9c5bf1461029057806391d148541461028757806392f5d88a1461027e578063952e901214610275578063996d6f701461026c578063a0cf0aea14610263578063a217fddf1461025a578063a3f4df7e14610251578063aede369314610248578063b381cf401461023f578063b9a89ca314610236578063c3accd481461022d578063c8a3a5c614610224578063d547741f1461021b578063d73792a914610212578063d8baf7cf14610209578063dd8544b314610200578063dede7f15146101f7578063f2fde38b146101ee578063f6ee13a6146101e5578063f8742254146101dc5763faa3f2f90361000e576101d7611348565b61000e565b506101d761131e565b506101d76112c1565b506101d7611213565b506101d76111e8565b506101d761118c565b506101d7611165565b506101d761113b565b506101d7611100565b506101d76110d9565b506101d76110b2565b506101d7611078565b506101d7610eb5565b506101d7610e8e565b506101d7610e58565b506101d7610d50565b506101d7610d07565b506101d7610cb1565b506101d7610c87565b506101d7610c41565b506101d7610b09565b506101d7610ae2565b506101d7610aba565b506101d7610a61565b506101d7610a33565b506101d76109be565b506101d7610993565b506101d7610969565b506101d7610920565b506101d76108d9565b506101d7610835565b506101d76106b4565b506101d76105f6565b506101d761055b565b506101d7610534565b506101d7610507565b506101d7610485565b506101d7610419565b506101d7610398565b600080fd5b600091031261034257565b61034a600080fd5b565b610361916008021c5b6001600160a01b031690565b90565b90610361915461034c565b61036160006002610364565b61038490610355565b9052565b60208101929161034a919061037b565b50346103c5575b6103aa366004610337565b6103c16103b561036f565b60405191829182610388565b0390f35b6103cd600080fd5b61039f565b6001600160e01b03191690565b6103e8816103d2565b0361033257565b9050359061034a826103df565b9061036191602081830312156103ef57610414600080fd5b6103ef565b5034610448575b6103c16104366104313660046103fc565b611370565b60405191829182901515815260200190565b610450600080fd5b610420565b806103e8565b9050359061034a82610455565b90610361916020818303121561045b57610480600080fd5b61045b565b50346104b3575b6103c16104a261049d366004610468565b611424565b6040515b9182918290815260200190565b6104bb600080fd5b61048c565b6103e881610355565b9050359061034a826104c0565b9190610361906040848203126104fa575b6104f1818561045b565b936020016104c9565b610502600080fd5b6104e7565b5034610527575b61052261051c3660046104d6565b90611463565b604051005b61052f600080fd5b61050e565b503461054e575b610522610549366004610468565b611d3a565b610556600080fd5b61053b565b5034610576575b6105226105703660046104d6565b90611635565b61057e600080fd5b610562565b908160809103126105915790565b610361600080fd5b90916060828403126105e9575b6103616105c58484356001600160401b0381116105dc575b8501610583565b936105d3816020860161045b565b936040016104c9565b6105e4600080fd5b6105be565b6105f1600080fd5b6105a6565b50610522610605366004610599565b91613092565b60ff81166103e8565b9050359061034a8261060b565b60e0818303126106a7575b6106488282356001600160401b03811161069a575b8301610583565b92610656836020840161045b565b9261066481604085016104c9565b92610672826060830161045b565b926103616106838460808501610614565b936106918160a0860161045b565b9360c00161045b565b6106a2600080fd5b610641565b6106af600080fd5b61062c565b50346106d5575b6105226106c9366004610621565b9594909493919361340f565b6106dd600080fd5b6106bb565b601f01601f191690565b50634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b0382111761072457604052565b61072c6106ec565b604052565b9061034a61073e60405190565b9283610703565b60209081906001600160401b03811161075d57020190565b6107656106ec565b020190565b9092919261077f61077a82610745565b610731565b93818552602080860192028301928184116107bd575b915b8383106107a45750505050565b602080916107b284866104c9565b815201920191610797565b6107c5600080fd5b610795565b906103619181601f820112156107e6575b60208135910161076a565b6107ee600080fd5b6107db565b9061036191602081830312610828575b8035906001600160401b03821161081b575b016107ca565b610823600080fd5b610815565b610830600080fd5b610803565b503461084f575b61052261084a3660046107f3565b611c94565b610857600080fd5b61083c565b50634e487b7160e01b600052603260045260246000fd5b610893600191610881815490565b84101561089c57600052602060002090565b91020190600090565b6108a461085c565b600052602060002090565b600360006108bb825490565b8310156108d65750610361916108d091610873565b90610364565b80fd5b50346108f6575b6103c16103b56108f1366004610468565b6108af565b6108fe600080fd5b6108e0565b9061036191602081830312156104c95761091b600080fd5b6104c9565b503461093a575b610522610935366004610903565b613471565b610942600080fd5b610927565b610361916008021c81565b906103619154610947565b61036160006001610952565b5034610986575b61097b366004610337565b6103c16104a261095d565b61098e600080fd5b610970565b50346109b1575b6109a5366004610337565b6103c16104a260035490565b6109b9600080fd5b61099a565b50346109dc575b6109d0366004610337565b6103c16104a260045490565b6109e4600080fd5b6109c5565b608081830312610a26575b6109fe828261045b565b92610361610a0f84602085016104c9565b93610a1d81604086016104c9565b93606001610614565b610a2e600080fd5b6109f4565b5034610a54575b6103c16104a2610a4b3660046109e9565b92919091611e64565b610a5c600080fd5b610a3a565b5034610a7c575b610522610a76366004610599565b916129ff565b610a84600080fd5b610a68565b919061036190604084820312610aad575b610aa481856104c9565b9360200161045b565b610ab5600080fd5b610a9a565b5034610ad5575b610522610acf366004610a89565b90613576565b610add600080fd5b610ac1565b5034610afc575b610522610af7366004610468565b613493565b610b04600080fd5b610ae9565b5034610b27575b6103c1610436610b213660046104d6565b906113f4565b610b2f600080fd5b610b10565b909182601f83011215610b73575b8135916020906001600160401b038411610b66575b01926020830284011161034257565b610b6e600080fd5b610b57565b610b7b600080fd5b610b42565b608081830312610bdf575b610b95828261045b565b92610bce610ba684602085016104c9565b936040610bb5828287016104c9565b946001806060830135931b038211610bd2575b01610b34565b9091565b610bda600080fd5b610bc8565b610be7600080fd5b610b8b565b9060608061034a93610c066000820151600086019061037b565b610c186020820151602086019061037b565b610c2a6040820151604086019061037b565b0151910152565b60808101929161034a9190610bec565b5034610c6e575b6103c1610c62610c59366004610b80565b93929092611f9b565b60405191829182610c31565b610c76600080fd5b610c48565b600460006108bb825490565b5034610ca4575b6103c16103b5610c9f366004610468565b610c7b565b610cac600080fd5b610c8e565b5034610cd2575b610522610cc6366004610621565b95949094939193613344565b610cda600080fd5b610cb8565b6103556103616103619290565b61036190610cdf565b6103616000610cec565b610361610cf5565b5034610d24575b610d19366004610337565b6103c16103b5610cff565b610d2c600080fd5b610d0e565b6103616103616103619290565b6103616000610d31565b610361610d3e565b5034610d6d575b610d62366004610337565b6103c16104a2610d48565b610d75600080fd5b610d57565b602090610d99906001600160401b038111610d9d57601f01601f191690565b0190565b610da56106ec565b6106e2565b90610db761077a83610d7a565b918252565b610dc66010610daa565b6f21b0b6b2b637ba2cb0b5a937baba32b960811b602082015290565b610361610dbc565b610361610de2565b610361610dea565b60005b838110610e0d5750506000910152565b8181015183820152602001610dfd565b610e3e6106e2602093610d9993610e32815190565b80835293849260200190565b95869101610dfa565b602080825261036192910190610e1d565b5034610e81575b610e6a366004610337565b6103c1610e75610df2565b60405191829182610e47565b610e89600080fd5b610e5f565b5034610ea8575b610522610ea3366004610468565b6135db565b610eb0600080fd5b610e95565b5034610ef0575b610ec7366004610337565b6103c17f00000000000000000000000000000000000000000000000000000000000000006103b5565b610ef8600080fd5b610ebc565b919060a083820312610f69575b610f14818461045b565b92610f2282602083016104c9565b92610361604093610f5381610f39818888016104c9565b966001806060890135921b038111610f5c575b86016107ca565b9360800161045b565b610f64600080fd5b610f4c565b610f71600080fd5b610f0a565b90610f96610f8f610f85845190565b8084529260200190565b9260200190565b9060005b818110610fa75750505090565b909192610fc4610fbd6001928651815260200190565b9460200190565b929101610f9a565b90610d998160209361037b565b90610fe8610f8f610f85845190565b9060005b818110610ff95750505090565b90919261100c610fbd6001928651610fcc565b929101610fec565b906103619060608061105f61104d61103b6080860160008901518782036000890152610f76565b60208801518682036020880152610fd9565b60408701518582036040870152610fd9565b940151910152565b602080825261036192910190611014565b50346110a5575b6103c1611099611090366004610efd565b93929092612461565b60405191829182611067565b6110ad600080fd5b61107f565b50346110cc575b6105226110c7366004610903565b611e03565b6110d4600080fd5b6110b9565b50346110f3575b6105226110ee3660046107f3565b611c38565b6110fb600080fd5b6110e0565b503461111b575b6105226111153660046104d6565b906115c7565b611123600080fd5b611107565b610361612710610d31565b610361611128565b5034611158575b61114d366004610337565b6103c16104a2611133565b611160600080fd5b611142565b503461117f575b61052261117a366004610903565b613482565b611187600080fd5b61116c565b50346111a6575b6105226111a1366004610903565b611a5c565b6111ae600080fd5b611193565b90916060828403126111db575b6103616111cd848461045b565b936105d381602086016104c9565b6111e3600080fd5b6111c0565b5034611206575b6103c1610c626112003660046111b3565b916120ea565b61120e600080fd5b6111ef565b503461122d575b610522611228366004610903565b61349d565b611235600080fd5b61121a565b909160c0828403126112b4575b611251838361045b565b9261125f81602085016104c9565b9260409261036161129084611276818887016104c9565b966001806060880135921b0381116112a7575b85016107ca565b9361129e816080860161045b565b9360a00161045b565b6112af600080fd5b611289565b6112bc600080fd5b611247565b50346112e5575b6103c16110996112d936600461123a565b94939093929192612296565b6112ed600080fd5b6112c8565b7f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab9590565b6103616112f2565b503461133b575b611330366004610337565b6103c16104a2611316565b611343600080fd5b611325565b5034611363575b61052261135d366004610599565b916131fa565b61136b600080fd5b61134f565b611380637965db0b60e01b6103d2565b611389826103d2565b14908115611395575090565b61036191506119ad565b905b600052602052604060002090565b61036190610355906001600160a01b031682565b610361906113af565b610361906113c3565b906113a1906113cc565b610361905b60ff1690565b61036190546113df565b6103619161140e916114086000918261139f565b016113d5565b6113ea565b6103619081565b6103619054611413565b600161143d61036192611435600090565b50600061139f565b0161141a565b9061034a9161145961145482611424565b61146d565b9061034a91611689565b9061034a91611443565b61034a903390611509565b6103619081906001600160a01b031681565b61036190610d31565b610d996114ab926020926114a5815190565b94859290565b93849101610dfa565b6114ec61036193926114e66114e69376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260170190565b90611493565b7001034b99036b4b9b9b4b733903937b6329607d1b815260110190565b9061151b61151782846113f4565b1590565b611523575050565b6115a89161036161155c61155661153c611590956113c3565b61155061154a601492611478565b91610d31565b90611879565b9261148a565b61156b60209161155083610d31565b9261158461157860405190565b948593840192836114b4565b90810382520382610703565b60405162461bcd60e51b815291829160048301610e47565b0390fd5b9061034a916115bd61145482611424565b9061034a916116ff565b9061034a916115ac565b156115d857565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b61034a919061165a61164b33610355565b610355565b61165484610355565b146115d1565b6116ff565b9060ff905b9181191691161790565b9061167e61036161168592151590565b825461165f565b9055565b9061169761151782846113f4565b61169f575050565b6116b960016116b4836000611408878261139f565b61166e565b33906116ef6116e96116e97f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9590565b926113cc565b926116f960405190565b600090a4565b9061170a81836113f4565b611712575050565b61172660006116b48382611408878261139f565b33906116ef6116e96116e97ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9590565b50634e487b7160e01b600052601160045260246000fd5b8181029291811591840414171561178057565b61034a611756565b9190820180921161178057565b369037565b9061034a6117b06117aa84610daa565b93610d7a565b601f190160208401611795565b9060016020916117cb845190565b8110156117d9575b02010190565b6117e161085c565b6117d3565b60019080156117f3570390565b6117fb611756565b0390565b6113e46103616103619290565b610361906118246118206103619460ff1690565b9190565b901c90565b1561183057565b60405162461bcd60e51b8152806115a8600482016020808252818101527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604082015260600190565b91906002906118aa6118a56118968361189186610d31565b61176d565b61189f85610d31565b90611788565b61179a565b9160009160306118c26118bc85610d31565b866117bd565b536118fa6118f1600f60fb1b926118916001958695881a6118eb6118e588610d31565b8b6117bd565b53610d31565b61189f83610d31565b915b61191d575b5050610361929361191761182061036193610d31565b14611829565b909461192882610d31565b8611156119a75761199461198e83926119716119546f181899199a1a9b1b9c1cb0b131b232b360811b90565b61195e600f610d31565b8316601081101561199a575b1a60f81b90565b861a61197d8a896117bd565b5361198860046117ff565b9061180c565b966117e6565b916118fc565b6119a261085c565b61196a565b94611901565b6119c66119c06301ffc9a760e01b6103d2565b916103d2565b1490565b156119d157565b60405162461bcd60e51b815260206004820152602860248201527f4d61696e7461696e61626c653a2043616c6c6572206973206e6f742061206d6160448201526734b73a30b4b732b960c11b6064820152608490fd5b61034a90611a45611a40335b611a3b6112f2565b6113f4565b6119ca565b61034a90611a52816113cc565b600019919061370b565b61034a90611a27565b61034a90611a75611a4033611a33565b611bf5565b90611a89610f8f610f85845190565b9060005b818110611a9a5750505090565b909192611aad610fbd6001928651610fcc565b929101611a8d565b602080825261036192910190611a7a565b9160001960089290920291821b911b611664565b9190611aeb61036161168593610d31565b908354611ac6565b61034a91600091611ada565b818110611b0a575050565b80611b186000600193611af3565b01611aff565b9091828110611b2c57505050565b61034a9290611b42905b92600052602060002090565b9081019101611aff565b61034a9190600160401b8211611b68575b805490828155611b1e565b611b706106ec565b611b5d565b6103619051610355565b6001611bad611b36611b8f855190565b94838060401b038611611bde575b611ba78686611b4c565b60200190565b92049160005b838110611bc05750505050565b6001906020611bd161036186611b75565b9401938184015501611bb3565b611be66106ec565b611b9d565b9061034a91611b7f565b61034a907f658ff1688002926d8f426cb10c052ec29003f50042df9652d8613484c1a58647611c2360405190565b80611c2e8482611ab5565b0390a16003611beb565b61034a90611a65565b61034a90611c51611a4033611a33565b61034a907febf7325f48e05e5e38809c69f8b02a7c907ed31d8768e6c2d841b1296a9225fe611c7f60405190565b80611c8a8482611ab5565b0390a16004611beb565b61034a90611c41565b61034a90611cad611a4033611a33565b611cea565b90815260408101929161034a9160200152565b0152565b9060001990611664565b90611ce361036161168592610d31565b8254611cc9565b61034a90611cf8600161141a565b817f4bb8a6184424e4bb853a4836042f5a726e4e710873989bfc6abdab19966f5b7091611d30611d2760405190565b92839283611cb2565b0390a16001611cd3565b61034a90611c9d565b61034a90611d53611a4033611a33565b611db3565b61036190610355565b6103619054611d58565b91602061034a929493611d866040820196600083019061037b565b019061037b565b906001600160a01b0390611664565b90611dac610361611685926113cc565b8254611d8d565b61034a90611dc16002611d61565b817fb2c853ac4d80d18d058c43d8018d077a036e542a79acae1647f5ad2a8c76f4e291611df9611df060405190565b92839283611d6b565b0390a16002611d9c565b61034a90611d43565b9050519061034a82610455565b906103619160208183031215611e0c57611e31600080fd5b611e0c565b90815260608101939261034a929091604091611d86905b602083019061037b565b506040513d6000823e3d90fd5b91926020919493611eb1611e76600090565b96611eba611e94611e8f611e8f6108d060049889610873565b6113cc565b9363ef99893a92611ea460405190565b9889978896879660e01b90565b86528501611e36565b03915afa60009181611edd575b50611ed9575090506103616000610d31565b9150565b611eff91925060203d8111611f06575b611ef78183610703565b810190611e19565b9038611ec7565b503d611eed565b6103616080610731565b611f1f611f0d565b906000825260208080808501600081520160005b8152016000905250565b610361611f17565b60019060ff1660ff8114611f57570190565b610d99611756565b6103616103616103619260ff1690565b91602091811015611f7f57020190565b61076561085c565b356103618161060b565b9061038490610355565b909493919294611fa9611f3d565b50611fb2611f3d565b9360005b84611fc082611f5f565b10156120e0576004846020611ff36108d0611fed611fe88e8c611fe28a611f5f565b91611f6f565b611f87565b85610873565b92612000611e8f856113cc565b611eb163ef99893a612016898b611ea460405190565b03915afa600091816120c0575b50612039575050612034905b611f45565b611fb6565b600091612045836117ff565b60ff85161480156120aa575b612062575b50505061203490611f45565b612034939850906120806120a192612078611f0d565b948501611f91565b61208d8660208501611f91565b61209a8560408501611f91565b6060830152565b95903880612056565b506120b961036160608b015190565b8211612051565b6120d991925060203d8111611f0657611ef78183610703565b9038612023565b5093955050505050565b90916120f4611f3d565b506120fd611f3d565b9160005b600461210e610361825490565b61211783611f5f565b10156122105782602061212d6108d08585610873565b9261213a611e8f856113cc565b611eb163ef99893a6121508a8d611ea460405190565b03915afa600091816121f0575b5061217857505061217390600161202f57611f45565b612101565b600091612184836117ff565b60ff85161480156121da575b6121a1575b50505061217390611f45565b612173939650906121b76121d192612078611f0d565b6121c48860208501611f91565b61209a8660408501611f91565b93903880612195565b506121e9610361606089015190565b8211612190565b61220991925060203d8111611f0657611ef78183610703565b903861215d565b50505050905090565b612221611f0d565b90606082526020808080850160608152016060611f33565b610361612219565b1561224857565b60405162461bcd60e51b815260206004820152601c60248201527b59616b526f757465723a20496e76616c6964206d61782d737465707360201b6044820152606490fd5b6103616000610daa565b91936122f3936103619692956122aa612239565b506000966122b788610d31565b841180612346575b6122c890612241565b6122d28187613949565b94826122dd8a610d31565b82111561233b576122ed916123a4565b95612507565b9061230060208301515190565b61230c61182083610d31565b14612318575b50613a67565b61232690820161038461228c565b6123356040820161038461228c565b38612312565b50506122ed88610d31565b506122c86123546005610d31565b851090506122bf565b9190820391821161178057565b90602080916117cb845190565b50634e487b7160e01b600052601260045260246000fd5b8115612398570490565b6123a0612377565b0490565b9091906123f360009360606002917f00000000000000000000000000000000000000000000000000000000000000006123ed6123e7670de0b6b3a7640000610d31565b94610d31565b93612461565b6040810151519060009161240961182084610d31565b0361241357505050565b61036193945061244a61244e93926118919201612444612434825192515190565b61243e6001610d31565b9061235d565b9061236a565b5190565b61245b633b9aca00610d31565b9061238e565b6124ad91939261036195612473612239565b5060009461248086610d31565b8211806124bd575b61249190612241565b61249b8785613949565b926124a587610d31565b978895612507565b9161230c61036160208501515190565b506124916124cb6005610d31565b83109050612488565b90610db761077a83610745565b9061034a6117b06124f1846124d4565b93610745565b6001906000198114611f57570190565b91929093959495612516612239565b5061252087613985565b91829761252b600090565b94859060009061253a82610d31565b8b1415966125498a8c846120ea565b906060820191612557835190565b61256361182087610d31565b0361294b575b5050506001996125788b610d31565b871180612911575b612594575b50505050505050505050505090565b908a93929160036125b56125b06125a9835490565b8a5161189f565b6124e1565b97866125c086610d31565b905b6128bf575b50866125d286610d31565b905b61285b575b5050506125e583610d31565b945b6125f2575b50612585565b6125fd610361885190565b851015612856578461261b6116466126168e988b61236a565b611b75565b61262483610355565b14612848578d8a8a8a61264461263d612616878461236a565b87896120ea565b9960608b019a6126528c5190565b61265e6118208c610d31565b146128345761266c8d613985565b9461279e575b8b61244a8c8c6126be9a9b9c9d9e9f946126a4604061269d6126956126ab995190565b948401611b75565b9201611b75565b918a613a0c565b6126b8612616898561236a565b90612507565b6126c781613b93565b8c6126ec6126e66126e085805160409091015151015190565b93610355565b91610355565b1480612795575b61270d575b5050612703906124f7565b939291908b6125e7565b919e909a8e60608d0161271e815190565b906060850191612732611820610361855190565b1161274a575b505050505061270390999d90386126f8565b9161276561244e9261243e61276061276b965190565b915190565b9061176d565b61277b611820610361848761235d565b11612788578e8180612738565b9a509d61270391506124f7565b508b81116126f3565b899b8a9b5061244a826127df60206127c76126be9c9d9e9f611e8f611e8f916126ab9901611b75565b6369cff80d906127d660405190565b93849260e01b90565b825260049082905afa908115612827575b600091612809575b509d509250509b9998979650612672565b612821915060203d8111611f0657611ef78183610703565b386127f8565b61282f611e57565b6127f0565b5050505050506127039192939495506124f7565b6127039192939495506124f7565b6125ec565b61286d61036183999495969798995190565b8110156128b357806128a26128886126166128a7948661236a565b61289d8d612444856128988b5490565b611788565b611f91565b6124f7565b829796959493926125d4565b829796959493506125d9565b6128d161036184959697989993945490565b81101561290457806128a28b61289d836128f16108d06128f7978b610873565b9261236a565b81979695949392916125c2565b96959493929190966125c7565b5061292b61292160208701515190565b61245b6020610d31565b61294461182061036161293e6002610d31565b8b61235d565b1115612580565b90919299508861298e575b84839261244a92612968612985965190565b61297f60406129788a8501611b75565b9301611b75565b92613a0c565b96388080612569565b61298592919450806129af60206127c7611e8f611e8f8961244a9701611b75565b825260049082905afa9081156129f2575b6000916129d4575b50959293509050612956565b6129ec915060203d8111611f0657611ef78183610703565b386129c8565b6129fa611e57565b6129c0565b90612a0c92913390612b1b565b50565b3561036181610455565b903590601e193682900301821215612a5f575b018035906020906001600160401b038311612a52575b0191602082023603831361034257565b612a5a600080fd5b612a42565b612a67600080fd5b612a2c565b35610361816104c0565b61038490610d31565b9095949261034a94612ab7611d8692612aad608096612aa360a088019c6000890152565b6020870190612a76565b604085019061037b565b606083019061037b565b15612ac857565b60405162461bcd60e51b815260206004820152602560248201527f59616b526f757465723a20496e73756666696369656e74206f757470757420616044820152641b5bdd5b9d60da1b6064820152608490fd5b93849391612b2885612a0f565b93612b336000610d31565b81118015612f4d575b612eef575b5083612b8391612b69612b64612b5a60408b018b612a19565b611fe26000610d31565b612a6c565b90612b7d612b64612b5a60608c018c612a19565b91612ff5565b612bae612b64612b966040880188612a19565b611fe2612434612ba960408c018c612a19565b905090565b93612bbb611e8f866113cc565b946020612bc760405190565b9687906370a0823160e01b82528180612be38960048301610388565b03915afa958615612ee2575b600096612ec2575b50612c026000610d31565b945b612c17610361612ba960608b018b612a19565b861015612e3157878691612c37610361612434612ba96060860186612a19565b831015612deb57818380612c4e6060840184612a19565b612c586001610d31565b612c629084611788565b90612c6c92611f6f565b612c7590612a6c565b92612b64612d7a97611fe2612cf6612d5f9960008060209b8b612d1c83612d429d612d27612cc3611e8f9f611e8f9f612b64611e8f92612cbd611e8f935b6060810190612a19565b90611f6f565b9489612d03612b6463eab90da695611fe2612cf6612ceb612b6484612cbd60408a018a612a19565b956040810190612a19565b91909261189f6001610d31565b90873b15612dde575b6040519a8b998a98899760e01b90565b875260048701612a7f565b03925af18015612dd1575b612dab575b506040810190612a19565b604051938492839182916370a0823160e01b835260048301610388565b03915afa908115612d9e575b600091612d80575b50956124f7565b94612c04565b612d98915060203d8111611f0657611ef78183610703565b38612d73565b612da6611e57565b612d6b565b612dc49060005b612dbc8183610703565b810190610337565b38612d37565b503d612db2565b612dd9611e57565b612d32565b612de6600080fd5b612d0c565b8183808992612b64612d7a97611fe2612cf6612d5f9960008060209b8b612d1c83612d429d612d27612cc3611e8f9f611e8f9f612b64611e8f92612cbd611e8f93612cb3565b612e74929550612b64919450612e4f612e7a949897612b5a9261235d565b96612e6a612e6261036160208401612a0f565b891015612ac1565b6040810190612a19565b92612a0f565b9183612eaf612ea97f9fc8352e52998db4087d5e6e1c1aafa38788e749e5d7a24f5cb230f737954402936113cc565b936113cc565b93612ebc611d2760405190565b0390a390565b612edb91965060203d8111611f0657611ef78183610703565b9438612bf7565b612eea611e57565b612bef565b612f46945090612f0a612b8392612f0588612a0f565b612fb5565b9081958692612f22612b64612b5a60408d018d612a19565b9083612f40612f316002611d61565b92612f3b8d612a0f565b61235d565b92612ff5565b9150612b41565b50612f58600161141a565b612f656118206000610d31565b11612b3c565b15612f7257565b60405162461bcd60e51b815260206004820152601b60248201527a59616b526f757465723a20496e73756666696369656e742066656560281b6044820152606490fd5b90612ff061036192612fc5600090565b50612fde612fd6610361600161141a565b841015612f6b565b612765612fe9611128565b938461235d565b61238e565b929190613004611646306113cc565b61300d82610355565b146130235761301e61034a946113cc565b61366a565b5061303061034a936113cc565b613602565b1561303c57565b60405162461bcd60e51b815260206004820152602860248201527f59616b526f757465723a2050617468206e6565647320746f20626567696e20776044820152670d2e8d040ae8aa8960c31b6064820152608490fd5b90612a0c92916131006130fb612b646130f46130c26130b46040870187612a19565b9390600094611fe286610d31565b6130ee6126e67f0000000000000000000000000000000000000000000000000000000000000000610355565b14613035565b8301612a0f565b61310f565b613109306113cc565b90612b1b565b600061315b613140611e8f7f00000000000000000000000000000000000000000000000000000000000000006113cc565b63d0e30db0813b15613192575b604051948593849260e01b90565b825281600481015b03925af18015613185575b6131755750565b61034a906000612dbc8183610703565b61318d611e57565b61316e565b61319a600080fd5b61314d565b156131a657565b60405162461bcd60e51b815260206004820152602660248201527f59616b526f757465723a2050617468206e6565647320746f20656e64207769746044820152650d040ae8aa8960d31b6064820152608490fd5b61326e9061034a939261325e61322c612b6460408501612ba9611fe2612434613223848a612a19565b9390948a612a19565b6132586126e67f0000000000000000000000000000000000000000000000000000000000000000610355565b1461319f565b33613268306113cc565b92612b1b565b9061328f565b91602061034a929493611cc56040820196600083019061037b565b6000906132be611e8f7f00000000000000000000000000000000000000000000000000000000000000006113cc565b6132e88363205c2878833b156132f3575b6131636132db60405190565b9788968795869460e01b90565b845260048401613274565b6132fb600080fd5b6132cf565b949290979695939160e08601986000870161331a9161037b565b602086016133279161037b565b6040850152606084015260ff16608083015260a082015260c00152565b929561034a96612b6493966133b66133c18795986133656040880188612a19565b929096613381611e8f611e8f60009c8d9b8c98611fe28a610d31565b9563d505accf93339861339e87613397306113cc565b9d01612a0f565b893b15613402575b6040519c8d9b8c9a8b9960e01b90565b895260048901613300565b03925af180156133f5575b6133d8575b50506129ff565b816133ee92903d10612dca57612dbc8183610703565b38806133d1565b6133fd611e57565b6133cc565b61340a600080fd5b6133a6565b929561034a96612b6493966133b66134308795986133656040880188612a19565b03925af18015613464575b613447575b50506131fa565b8161345d92903d10612dca57612dbc8183610703565b3880613440565b61346c611e57565b61343b565b61034a9061347d6112f2565b611463565b61034a9061348e6112f2565b6115c7565b61034a9033610570565b61034a9033906134b56134ae610d3e565b9182611463565b611635565b61034a91906134cb611a4033611a33565b613511565b156134d757565b60405162461bcd60e51b81526020600482015260126024820152712737ba3434b733903a37903932b1b7bb32b960711b6044820152606490fd5b61352661351e6000610d31565b835b116134d0565b61353a82613533836113cc565b3390613602565b6135716135677f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28926113cc565b926104a660405190565b0390a2565b9061034a916134ba565b61034a90613590611a4033611a33565b61353a60006135a76135a182610d31565b84613520565b80808080866135b8611e8f336113cc565b8282156135d2575bf1610cec576135cd611e57565b610cec565b506108fc6135c0565b61034a90613580565b6135fd6135f76103619263ffffffff1690565b60e01b90565b6103d2565b61364560049261363661034a9561361c63a9059cbb6135e4565b9261362660405190565b9687946020860190815201613274565b60208201810382520383610703565b6138e8565b604090611cc561034a9496959396611e4d6060840198600085019061037b565b906136459061363661034a956004956136866323b872dd6135e4565b9361369060405190565b978895602087019081520161364a565b156136a757565b60405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608490fd5b61364560049261363661034a9561373860008461372782610d31565b8414918215613745575b50506136a0565b61361c63095ea7b36135e4565b9091506020613753896113cc565b63dd62ed3e9061377f613765306113cc565b9261378a61377260405190565b9788958694859460e01b90565b845260048401611d6b565b03915afa9182156137db575b6000926137b3575b506118206137ab91610d31565b148438613731565b6137ab9192506137d36118209160203d8111611f0657611ef78183610703565b92915061379e565b6137e3611e57565b613796565b3d15613802576137f73d610daa565b903d6000602084013e565b606090565b1561380e57565b60405162461bcd60e51b8152806115a8600482016020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b8015156103e8565b9050519061034a82613857565b90610361916020818303121561385f57613884600080fd5b61385f565b1561389057565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6000916138f583926113cc565b9082602082019151925af161391161390b6137e8565b91613807565b80516139206118206000610d31565b116139285750565b61394481602061393961034a945190565b81830101910161386c565b613889565b9190604061396a613958612239565b92613963849661396f565b845261396f565b910152565b9060209161397f6118a584610d31565b92830152565b61398d612239565b5061036160008201519161209a6020820151916139cb6139b36060604084015193015190565b936139c46139bf611f0d565b978852565b6020870152565b6040850152565b6114e6906103619392611493565b613a00929161034a916139f260405190565b9485926020840192836139d2565b90810382520383610703565b6060916103849361034a9695613a316040850191613a2b83519161396f565b906139e0565b9052613a466020840191613a2b83519161396f565b9052613a5b6000830191613a2b83519161396f565b90520191612898835190565b613a6f612239565b50610361613a806000830151613b31565b9161209a613a916020830151613aad565b916139cb6139b36060613aa76040850151613aad565b93015190565b90815191613ac36125b060209461245b86610d31565b9283613acf6000610d31565b613ae6610361613add865190565b61245b86610d31565b811015613b2a57613b25906128a2613b1b613b15613b0c613b0688610d31565b8561176d565b61189f88610d31565b87015190565b61289d838a61236a565b613acf565b5093505050565b90815191613b476125b060209461245b86610d31565b9283613b536000610d31565b613b61610361613add865190565b811015613b2a57613b8e906128a2613b81613b15613b0c613b0688610d31565b613b8b838a61236a565b52565b613b53565b604061036191613ba1600090565b500151805101519056fea2646970667358221220e16e3b854b925e3bd99bd0f283348e331c546b4a5ceceee7e20294320f0f427764736f6c634300081100330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001bb7b44cc398aaa2b76ac6253f0f5634279db9d00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000000000000000000000000000000000000000000003000000000000000000000000763b382ba5fbbc697f58b327c2bac05fa1fb51b30000000000000000000000008c0971be6a98dcc61958ffdec4259e5ee833689b0000000000000000000000004548ab9f211d10e511f37f3bcab0fe96e8b04574000000000000000000000000000000000000000000000000000000000000000700000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000ff970a61a04b1ca14834a43f5de4533ebddb5cc8000000000000000000000000912ce59144191c1204e64559fe8253a0e49e6548000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da1