@across-protocol/contracts 5.0.11 → 5.0.12-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/contracts/external/interfaces/CCTPInterfaces.sol +18 -0
  2. package/contracts/interfaces/SponsoredCCTPInterface.sol +11 -0
  3. package/contracts/libraries/SponsoredCCTPQuoteLib.sol +22 -0
  4. package/contracts/periphery/mintburn/ArbitraryEVMFlowExecutor.sol +38 -15
  5. package/contracts/periphery/mintburn/sponsored-cctp/SponsoredCCTPDstPeriphery.sol +41 -12
  6. package/contracts/test/MockCCTP.sol +10 -0
  7. package/dist/broadcast/deployed-addresses.json +172 -102
  8. package/dist/evm/artifacts/Arbitrum_Adapter.sol/Arbitrum_Adapter.json +1 -1
  9. package/dist/evm/artifacts/Arbitrum_CustomGasToken_Adapter.sol/Arbitrum_CustomGasToken_Adapter.json +1 -1
  10. package/dist/evm/artifacts/Arbitrum_RescueAdapter.sol/Arbitrum_RescueAdapter.json +1 -1
  11. package/dist/evm/artifacts/Arbitrum_SendTokensAdapter.sol/Arbitrum_SendTokensAdapter.json +1 -1
  12. package/dist/evm/artifacts/Arbitrum_SpokePool.sol/Arbitrum_SpokePool.json +1 -1
  13. package/dist/evm/artifacts/Arbitrum_WithdrawalHelper.sol/Arbitrum_WithdrawalHelper.json +1 -1
  14. package/dist/evm/artifacts/Base_Adapter.sol/Base_Adapter.json +1 -1
  15. package/dist/evm/artifacts/Blast_Adapter.sol/Blast_Adapter.json +1 -1
  16. package/dist/evm/artifacts/Blast_SpokePool.sol/Blast_SpokePool.json +1 -1
  17. package/dist/evm/artifacts/Boba_SpokePool.sol/Boba_SpokePool.json +1 -1
  18. package/dist/evm/artifacts/CCTPInterfaces.sol/ITokenMessengerV2.json +1 -1
  19. package/dist/evm/artifacts/CCTPInterfaces.sol/ITokenMinter.json +1 -1
  20. package/dist/evm/artifacts/Cher_SpokePool.sol/Cher_SpokePool.json +1 -1
  21. package/dist/evm/artifacts/CircleCCTPAdapter.sol/CircleDomainIds.json +1 -1
  22. package/dist/evm/artifacts/CounterfactualDepositCCTP.sol/CounterfactualDepositCCTP.json +1 -1
  23. package/dist/evm/artifacts/DoctorWho_Adapter.sol/DoctorWho_Adapter.json +1 -1
  24. package/dist/evm/artifacts/DstOFTHandler.sol/DstOFTHandler.json +1 -1
  25. package/dist/evm/artifacts/Ink_SpokePool.sol/Ink_SpokePool.json +1 -1
  26. package/dist/evm/artifacts/Lens_SpokePool.sol/Lens_SpokePool.json +1 -1
  27. package/dist/evm/artifacts/Linea_Adapter.sol/Linea_Adapter.json +1 -1
  28. package/dist/evm/artifacts/Linea_SpokePool.sol/Linea_SpokePool.json +1 -1
  29. package/dist/evm/artifacts/Lisk_Adapter.sol/Lisk_Adapter.json +1 -1
  30. package/dist/evm/artifacts/Lisk_SpokePool.sol/Lisk_SpokePool.json +1 -1
  31. package/dist/evm/artifacts/MockBedrockStandardBridge.sol/MockBedrockCrossDomainMessenger.json +1 -1
  32. package/dist/evm/artifacts/MockBedrockStandardBridge.sol/MockBedrockL1StandardBridge.json +1 -1
  33. package/dist/evm/artifacts/MockBedrockStandardBridge.sol/MockBedrockL2StandardBridge.json +1 -1
  34. package/dist/evm/artifacts/MockCCTP.sol/MockCCTPMessageTransmitter.json +1 -1
  35. package/dist/evm/artifacts/MockCCTP.sol/MockCCTPMessenger.json +1 -1
  36. package/dist/evm/artifacts/MockCCTP.sol/MockCCTPMessengerV2.json +1 -1
  37. package/dist/evm/artifacts/MockCCTP.sol/MockCCTPMinter.json +1 -1
  38. package/dist/evm/artifacts/MockOptimism_SpokePool.sol/MockOptimism_SpokePool.json +1 -1
  39. package/dist/evm/artifacts/Mode_Adapter.sol/Mode_Adapter.json +1 -1
  40. package/dist/evm/artifacts/OP_Adapter.sol/OP_Adapter.json +1 -1
  41. package/dist/evm/artifacts/OP_SpokePool.sol/OP_SpokePool.json +1 -1
  42. package/dist/evm/artifacts/Optimism_Adapter.sol/Optimism_Adapter.json +1 -1
  43. package/dist/evm/artifacts/Optimism_SpokePool.sol/Optimism_SpokePool.json +1 -1
  44. package/dist/evm/artifacts/Ovm_SpokePool.sol/Ovm_SpokePool.json +1 -1
  45. package/dist/evm/artifacts/Ovm_WithdrawalHelper.sol/Ovm_WithdrawalHelper.json +1 -1
  46. package/dist/evm/artifacts/Polygon_Adapter.sol/Polygon_Adapter.json +1 -1
  47. package/dist/evm/artifacts/Polygon_SpokePool.sol/Polygon_SpokePool.json +1 -1
  48. package/dist/evm/artifacts/Solana_Adapter.sol/Solana_Adapter.json +1 -1
  49. package/dist/evm/artifacts/SponsoredCCTPDstPeriphery.sol/SponsoredCCTPDstPeriphery.json +1 -1
  50. package/dist/evm/artifacts/SponsoredCCTPInterface.sol/SponsoredCCTPInterface.json +1 -1
  51. package/dist/evm/artifacts/SponsoredCCTPSrcPeriphery.sol/SponsoredCCTPSrcPeriphery.json +1 -1
  52. package/dist/evm/artifacts/SponsoredOFTSrcPeriphery.sol/SponsoredOFTSrcPeriphery.json +1 -1
  53. package/dist/evm/artifacts/Tron_SpokePool.sol/Tron_SpokePool.json +1 -1
  54. package/dist/evm/artifacts/Universal_Adapter.sol/Universal_Adapter.json +1 -1
  55. package/dist/evm/artifacts/Universal_SpokePool.sol/Universal_SpokePool.json +1 -1
  56. package/dist/evm/artifacts/WorldChain_SpokePool.sol/WorldChain_SpokePool.json +1 -1
  57. package/dist/evm/artifacts/ZkStack_Adapter.sol/ZkStack_Adapter.json +1 -1
  58. package/dist/evm/artifacts/ZkStack_CustomGasToken_Adapter.sol/ZkStack_CustomGasToken_Adapter.json +1 -1
  59. package/dist/evm/artifacts/ZkSync_SpokePool.sol/ZkSync_SpokePool.json +1 -1
  60. package/dist/evm/artifacts/Zora_Adapter.sol/Zora_Adapter.json +1 -1
  61. package/dist/evm/artifacts/eraVM_EIP7702.sol/SimpleContract.json +1 -1
  62. package/dist/evm/artifacts/eraVM_EIP7702.sol/SpokePoolEIP7702Test.json +1 -1
  63. package/dist/evm/artifacts/eraVM_EIP7702.sol/TestableMockSpokePool.json +1 -1
  64. package/package.json +1 -1
@@ -1 +1 @@
1
- {"abi":[{"type":"constructor","inputs":[{"name":"_l1Weth","type":"address","internalType":"contract WETH9Interface"},{"name":"_crossDomainMessenger","type":"address","internalType":"address"},{"name":"_l1StandardBridge","type":"address","internalType":"contract IL1StandardBridge"},{"name":"_l1Usdc","type":"address","internalType":"contract IERC20"},{"name":"_cctpTokenMessenger","type":"address","internalType":"contract ITokenMessenger"}],"stateMutability":"nonpayable"},{"type":"function","name":"DAI","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DAI_OPTIMISM_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"L1_STANDARD_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IL1StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"L1_WETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract WETH9Interface"}],"stateMutability":"view"},{"type":"function","name":"L2_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SNX","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SNX_OPTIMISM_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cctpTokenMessenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITokenMessenger"}],"stateMutability":"view"},{"type":"function","name":"cctpV2","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"recipientCircleDomainId","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"relayMessage","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"relayTokens","inputs":[{"name":"l1Token","type":"address","internalType":"address"},{"name":"l2Token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"usdcToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"event","name":"MessageRelayed","inputs":[{"name":"target","type":"address","indexed":false,"internalType":"address"},{"name":"message","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"TokensRelayed","inputs":[{"name":"l1Token","type":"address","indexed":false,"internalType":"address"},{"name":"l2Token","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":"0x610160806040523461020f5760a08161109480380380916100208285610213565b83398101031261020f5780516001600160a01b038116810361020f576020820151916001600160a01b038316830361020f576040810151926001600160a01b038416840361020f576060820151916001600160a01b038316830361020f57608001516001600160a01b0381169081810361020f575f93849360805260c05260e052600260a052604051602081019063011a412160e61b8252600481526100c7602482610213565b51915afa3d15610208573d6001600160401b0381116101f457604051906100f8601f8201601f191660200183610213565b81523d5f602083013e5b816101e8575b816101b2575b50610100526101205261014052604051610e5d9081610237823960805181818161014d01526102fb015260a051818181610379015281816106dc015261078a015260c0518181816105c201528181610b090152610bd3015260e0518181816102b70152610585015261010051818181610337015261065101526101205181818161043a0152610b920152610140518181816104a2015281816108d00152610b4f0152f35b90506020815191015190602081106101d7575b506001600160a01b031615155f61010e565b5f199060200360031b1b165f6101c5565b80516020149150610108565b634e487b7160e01b5f52604160045260245ffd5b6060610102565b5f80fd5b601f909101601f19168101906001600160401b038211908210176101f45760405256fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816311eac85514610bb6575080631efd482a14610b7357806335a2db6a14610b3057806352c8c75c146103ea5780635e522dd5146103bb5780635e743ef71461039d5780636e4009831461035c578063775c0d031461031f578063927ede2d146102db5780639748cf7c14610297578063abcaae8414610268578063e0bab4c414610239578063e6eb8ade146100e95763e8d6101e146100b8575f80fd5b346100e657806003193601126100e657602060405173c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8152f35b80fd5b5060403660031901126100e6576100fe610bf7565b6024359067ffffffffffffffff821161023557366023830112156102355781600401359067ffffffffffffffff8211610222576024830192602483369201011161022257836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b1561023157816001600160a01b0391604051928391633dbb202b60e01b83521694856004830152606060248301528183816101af606482018b8d610c43565b62030d40604483015203925af180156102265761020d575b50506102077f9e6c52944e331ba6270e7fe4cea2a4086bae8f7a27e1cdba07f416806f5d0ac4936040519384938452604060208501526040840191610c43565b0390a180f35b8161021791610c0d565b61022257835f6101c7565b8380fd5b6040513d84823e3d90fd5b5080fd5b8280fd5b50346100e657806003193601126100e6576020604051736b175474e89094c44da98b954eedeac495271d0f8152f35b50346100e657806003193601126100e65760206040517339ea01a0298c315d149a490e34b59dbf2ec7e48f8152f35b50346100e657806003193601126100e65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100e657806003193601126100e65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100e657806003193601126100e65760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b50346100e657806003193601126100e657602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100e657806003193601126100e657602060405162030d408152f35b50346100e657806003193601126100e65760206040517310e6593cdda8c58a1d0f14c5164b376352a55f2f8152f35b50608036600319011261085d576103ff610bf7565b6024356001600160a01b03811680910361085d5760443591606435916001600160a01b0383169182840361085d5785906001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000169116948186145f1461057f5750803b1561023157818091602460405180948193632e1a7d4d60e01b83528b60048401525af180156102265761056a575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561023157818691608460405180948193639a2ac6d560e01b835289600484015262030d406024840152606060448401528560648401525af180156102265761054b575b5050907fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b93608093925b604051938452602084015260408301526060820152a180f35b816105599195949395610c0d565b610566579091845f610508565b8480fd5b8161057491610c0d565b61056657845f610497565b949593947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692915082151580610afe575b156108bf5750507f0000000000000000000000000000000000000000000000000000000000000000906105ed848284610c63565b6040516332dd704760e21b815291602083600481855afa928315610869578893610874575b509060206001600160a01b03809316936024604051809581936352b7631960e11b8352886004840152165afa918215610869578892610831575b5090917f0000000000000000000000000000000000000000000000000000000000000000919085805b6106aa575050505050917fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b9391608093610532565b8481111561082b57845b841561077457833b15610770578a604051634701287760e11b815282600482015263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201528a60448201528460648201528160848201528160a48201526107d060c4820152818160e481838a5af180156102265761075b575b50505b81039081116107475780610675565b634e487b7160e01b8a52601160045260248afd5b8161076591610c0d565b610770578a5f610735565b8a80fd5b6040516337e9a82760e11b8152600481018290527f000000000000000000000000000000000000000000000000000000000000000063ffffffff166024820152604481018a9052606481018490526020816084818f895af18015610820576107dd575b50610738565b6020813d8211610818575b816107f560209383610c0d565b81010312610814575167ffffffffffffffff811603610770575f6107d7565b8b80fd5b3d91506107e8565b6040513d8e823e3d90fd5b806106b4565b9091506020813d602011610861575b8161084d60209383610c0d565b8101031261085d5751905f61064c565b5f80fd5b3d9150610840565b6040513d8a823e3d90fd5b9092506020813d6020116108b7575b8161089060209383610c0d565b810103126108b35751906001600160a01b03821682036108b35790916020610612565b8780fd5b3d9150610883565b9091506001600160a01b03959493957f000000000000000000000000000000000000000000000000000000000000000016736b175474e89094c44da98b954eedeac495271d0f8614610ae3575b73c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f861480610ac7575b610934888389610c63565b156109e8576001600160a01b0316803b15610235576040517fffaad6a50000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820187905282908290604490829084905af18015610226576109cd575b5050907fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b9360809392610532565b816109db9195949395610c0d565b610566579091845f61099f565b949593946001600160a01b0316915050803b1561085d575f809160e46040518094819363041c592960e51b83528a600484015287602484015289604484015288606484015262030d40608484015260c060a48401528160c48401525af18015610abc57610a7d575b50917fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b9391608093610532565b60809391955091610ab05f7fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b9694610c0d565b5f959193509193610a50565b6040513d5f823e3d90fd5b7339ea01a0298c315d149a490e34b59dbf2ec7e48f9150610929565b507310e6593cdda8c58a1d0f14c5164b376352a55f2f61090c565b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687146105b9565b3461085d575f36600319011261085d5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461085d575f36600319011261085d5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461085d575f36600319011261085d576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b600435906001600160a01b038216820361085d57565b90601f8019910116810190811067ffffffffffffffff821117610c2f57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301529190911692909190602083604481875afa928315610abc575f93610dc8575b508201809211610db45760405163095ea7b360e01b602082019081526001600160a01b039290921660248201526044808201939093529182525f908190610ced606485610c0d565b60405193610cfc604086610c0d565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020860152519082865af13d15610da7573d9067ffffffffffffffff8211610c2f57604051610d6e949092610d60601f8201601f191660200185610c0d565b83523d5f602085013e610dfc565b8051908115918215610d84575b50501561085d57565b819250906020918101031261085d5760200151801515810361085d575f80610d7b565b91610d6e92606091610dfc565b634e487b7160e01b5f52601160045260245ffd5b9092506020813d602011610df4575b81610de460209383610c0d565b8101031261085d5751915f610ca5565b3d9150610dd7565b91925015610e1857815115610e0f575090565b3b1561085d5790565b50805190811561085d57602001fdfea26469706673582212200a2f481cd657b3aa3de284bcf6dee94b771edbccdf9dfdfe9240aa22e4f8de7964736f6c634300081e0033"}
1
+ {"abi":[{"type":"constructor","inputs":[{"name":"_l1Weth","type":"address","internalType":"contract WETH9Interface"},{"name":"_crossDomainMessenger","type":"address","internalType":"address"},{"name":"_l1StandardBridge","type":"address","internalType":"contract IL1StandardBridge"},{"name":"_l1Usdc","type":"address","internalType":"contract IERC20"},{"name":"_cctpTokenMessenger","type":"address","internalType":"contract ITokenMessenger"}],"stateMutability":"nonpayable"},{"type":"function","name":"DAI","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DAI_OPTIMISM_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"L1_STANDARD_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IL1StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"L1_WETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract WETH9Interface"}],"stateMutability":"view"},{"type":"function","name":"L2_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SNX","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SNX_OPTIMISM_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cctpTokenMessenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITokenMessenger"}],"stateMutability":"view"},{"type":"function","name":"cctpV2","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"recipientCircleDomainId","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"relayMessage","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"relayTokens","inputs":[{"name":"l1Token","type":"address","internalType":"address"},{"name":"l2Token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"usdcToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"event","name":"MessageRelayed","inputs":[{"name":"target","type":"address","indexed":false,"internalType":"address"},{"name":"message","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"TokensRelayed","inputs":[{"name":"l1Token","type":"address","indexed":false,"internalType":"address"},{"name":"l2Token","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":"0x610160806040523461020f5760a08161109480380380916100208285610213565b83398101031261020f5780516001600160a01b038116810361020f576020820151916001600160a01b038316830361020f576040810151926001600160a01b038416840361020f576060820151916001600160a01b038316830361020f57608001516001600160a01b0381169081810361020f575f93849360805260c05260e052600260a052604051602081019063011a412160e61b8252600481526100c7602482610213565b51915afa3d15610208573d6001600160401b0381116101f457604051906100f8601f8201601f191660200183610213565b81523d5f602083013e5b816101e8575b816101b2575b50610100526101205261014052604051610e5d9081610237823960805181818161014d01526102fb015260a051818181610379015281816106dc015261078a015260c0518181816105c201528181610b090152610bd3015260e0518181816102b70152610585015261010051818181610337015261065101526101205181818161043a0152610b920152610140518181816104a2015281816108d00152610b4f0152f35b90506020815191015190602081106101d7575b506001600160a01b031615155f61010e565b5f199060200360031b1b165f6101c5565b80516020149150610108565b634e487b7160e01b5f52604160045260245ffd5b6060610102565b5f80fd5b601f909101601f19168101906001600160401b038211908210176101f45760405256fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816311eac85514610bb6575080631efd482a14610b7357806335a2db6a14610b3057806352c8c75c146103ea5780635e522dd5146103bb5780635e743ef71461039d5780636e4009831461035c578063775c0d031461031f578063927ede2d146102db5780639748cf7c14610297578063abcaae8414610268578063e0bab4c414610239578063e6eb8ade146100e95763e8d6101e146100b8575f80fd5b346100e657806003193601126100e657602060405173c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8152f35b80fd5b5060403660031901126100e6576100fe610bf7565b6024359067ffffffffffffffff821161023557366023830112156102355781600401359067ffffffffffffffff8211610222576024830192602483369201011161022257836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b1561023157816001600160a01b0391604051928391633dbb202b60e01b83521694856004830152606060248301528183816101af606482018b8d610c43565b62030d40604483015203925af180156102265761020d575b50506102077f9e6c52944e331ba6270e7fe4cea2a4086bae8f7a27e1cdba07f416806f5d0ac4936040519384938452604060208501526040840191610c43565b0390a180f35b8161021791610c0d565b61022257835f6101c7565b8380fd5b6040513d84823e3d90fd5b5080fd5b8280fd5b50346100e657806003193601126100e6576020604051736b175474e89094c44da98b954eedeac495271d0f8152f35b50346100e657806003193601126100e65760206040517339ea01a0298c315d149a490e34b59dbf2ec7e48f8152f35b50346100e657806003193601126100e65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100e657806003193601126100e65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100e657806003193601126100e65760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b50346100e657806003193601126100e657602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100e657806003193601126100e657602060405162030d408152f35b50346100e657806003193601126100e65760206040517310e6593cdda8c58a1d0f14c5164b376352a55f2f8152f35b50608036600319011261085d576103ff610bf7565b6024356001600160a01b03811680910361085d5760443591606435916001600160a01b0383169182840361085d5785906001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000169116948186145f1461057f5750803b1561023157818091602460405180948193632e1a7d4d60e01b83528b60048401525af180156102265761056a575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561023157818691608460405180948193639a2ac6d560e01b835289600484015262030d406024840152606060448401528560648401525af180156102265761054b575b5050907fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b93608093925b604051938452602084015260408301526060820152a180f35b816105599195949395610c0d565b610566579091845f610508565b8480fd5b8161057491610c0d565b61056657845f610497565b949593947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692915082151580610afe575b156108bf5750507f0000000000000000000000000000000000000000000000000000000000000000906105ed848284610c63565b6040516332dd704760e21b815291602083600481855afa928315610869578893610874575b509060206001600160a01b03809316936024604051809581936352b7631960e11b8352886004840152165afa918215610869578892610831575b5090917f0000000000000000000000000000000000000000000000000000000000000000919085805b6106aa575050505050917fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b9391608093610532565b8481111561082b57845b841561077457833b15610770578a604051634701287760e11b815282600482015263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201528a60448201528460648201528160848201528160a48201526107d060c4820152818160e481838a5af180156102265761075b575b50505b81039081116107475780610675565b634e487b7160e01b8a52601160045260248afd5b8161076591610c0d565b610770578a5f610735565b8a80fd5b6040516337e9a82760e11b8152600481018290527f000000000000000000000000000000000000000000000000000000000000000063ffffffff166024820152604481018a9052606481018490526020816084818f895af18015610820576107dd575b50610738565b6020813d8211610818575b816107f560209383610c0d565b81010312610814575167ffffffffffffffff811603610770575f6107d7565b8b80fd5b3d91506107e8565b6040513d8e823e3d90fd5b806106b4565b9091506020813d602011610861575b8161084d60209383610c0d565b8101031261085d5751905f61064c565b5f80fd5b3d9150610840565b6040513d8a823e3d90fd5b9092506020813d6020116108b7575b8161089060209383610c0d565b810103126108b35751906001600160a01b03821682036108b35790916020610612565b8780fd5b3d9150610883565b9091506001600160a01b03959493957f000000000000000000000000000000000000000000000000000000000000000016736b175474e89094c44da98b954eedeac495271d0f8614610ae3575b73c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f861480610ac7575b610934888389610c63565b156109e8576001600160a01b0316803b15610235576040517fffaad6a50000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820187905282908290604490829084905af18015610226576109cd575b5050907fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b9360809392610532565b816109db9195949395610c0d565b610566579091845f61099f565b949593946001600160a01b0316915050803b1561085d575f809160e46040518094819363041c592960e51b83528a600484015287602484015289604484015288606484015262030d40608484015260c060a48401528160c48401525af18015610abc57610a7d575b50917fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b9391608093610532565b60809391955091610ab05f7fd7e09655439c3932e55857df3220186e5a7f0980825f20691c2b35d941dee75b9694610c0d565b5f959193509193610a50565b6040513d5f823e3d90fd5b7339ea01a0298c315d149a490e34b59dbf2ec7e48f9150610929565b507310e6593cdda8c58a1d0f14c5164b376352a55f2f61090c565b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687146105b9565b3461085d575f36600319011261085d5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461085d575f36600319011261085d5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461085d575f36600319011261085d576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b600435906001600160a01b038216820361085d57565b90601f8019910116810190811067ffffffffffffffff821117610c2f57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301529190911692909190602083604481875afa928315610abc575f93610dc8575b508201809211610db45760405163095ea7b360e01b602082019081526001600160a01b039290921660248201526044808201939093529182525f908190610ced606485610c0d565b60405193610cfc604086610c0d565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020860152519082865af13d15610da7573d9067ffffffffffffffff8211610c2f57604051610d6e949092610d60601f8201601f191660200185610c0d565b83523d5f602085013e610dfc565b8051908115918215610d84575b50501561085d57565b819250906020918101031261085d5760200151801515810361085d575f80610d7b565b91610d6e92606091610dfc565b634e487b7160e01b5f52601160045260245ffd5b9092506020813d602011610df4575b81610de460209383610c0d565b8101031261085d5751915f610ca5565b3d9150610dd7565b91925015610e1857815115610e0f575090565b3b1561085d5790565b50805190811561085d57602001fdfea264697066735822122042329cc1fffa836b895f3e8140a8ee0675e15657d8bda924d70a4882e9ce3d0f64736f6c634300081e0033"}