Skip to content

Latest commit

 

History

History
133 lines (102 loc) · 88.4 KB

Deployment.md

File metadata and controls

133 lines (102 loc) · 88.4 KB
title category slug parentDocSlug order hidden
Deployment
6520398b749af50013f52ff4
seaport-deployment
seaport-overview
6
false

Deploying Seaport

Seaport 1.6 and the ConduitController can each be deployed to their respective canonical deployment address on all EVM chains using the CREATE2 Factory. Note that a pre-155 transaction with a gas price of 100 gwei (or a manual workaround) is required as part of the deployment process (subsequent transactions can be submitted without these constraints), and that EVM equivalence (particularly consistent CREATE2 address derivation) is required in order to deploy to the canonical cross-chain deployment addresses.

If you are deploying a fork of Seaport, it is highly advised that you supply the canonical conduit controller as its constructor argument; this allows the Seaport fork to use conduits that are fully interoperable with the canonical Seaport instance. (Better yet, deploy the canonical Seaport instance and use a distinct conduit if needed!)

Relevant Addresses

Name Address
KEYLESS_CREATE2_DEPLOYER_ADDRESS 0x4c8D290a1B368ac4728d83a9e8321fC3af2b39b1
KEYLESS_CREATE2_ADDRESS 0x7A0D94F55792C434d74a40883C6ed8545E406D12
INEFFICIENT_IMMUTABLE_CREATE2_FACTORY_ADDRESS 0xcfA3A7637547094fF06246817a35B8333C315196
IMMUTABLE_CREATE2_FACTORY_ADDRESS 0x0000000000ffe8b47b3e2130213b802212439497
ConduitController 0x00000000F9490004C11Cef243f5400493c00Ad63
Seaport 1.6 0x0000000000000068F116a894984e2DB1123eB395

Setting up Factory on a New Chain

If there is no IMMUTABLE_CREATE2_FACTORY_ADDRESS on the chain, deploy this first with foundry.

  1. Send 0.01 Ether (or relevant native token for the chain in question) to the KEYLESS_CREATE2_DEPLOYER_ADDRESS
  2. Create the KEYLESS_CREATE2_ADDRESS by submitting this pre-signed transaction:
cast publish --rpc-url ${RPC_URL} 0xf87e8085174876e800830186a08080ad601f80600e600039806000f350fe60003681823780368234f58015156014578182fd5b80825250506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222
  1. Create the INEFFICIENT_IMMUTABLE_CREATE2_FACTORY_ADDRESS by submitting:
cast send --rpc-url ${RPC_URL} --private-key ${PK} 0x7a0d94f55792c434d74a40883c6ed8545e406d12 0x608060405234801561001057600080fd5b50610833806100206000396000f3fe60806040526004361061003f5760003560e01c806308508b8f1461004457806364e030871461009857806385cf97ab14610138578063a49a7c90146101bc575b600080fd5b34801561005057600080fd5b506100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ec565b604080519115158252519081900360200190f35b61010f600480360360408110156100ae57600080fd5b813591908101906040810160208201356401000000008111156100d057600080fd5b8201836020820111156100e257600080fd5b8035906020019184600183028401116401000000008311171561010457600080fd5b509092509050610217565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014457600080fd5b5061010f6004803603604081101561015b57600080fd5b8135919081019060408101602082013564010000000081111561017d57600080fd5b82018360208201111561018f57600080fd5b803590602001918460018302840111640100000000831117156101b157600080fd5b509092509050610592565b3480156101c857600080fd5b5061010f600480360360408110156101df57600080fd5b508035906020013561069e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b600083606081901c33148061024c57507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116155b6102a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806107746045913960600191505060405180910390fd5b606084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051855195965090943094508b93508692506020918201918291908401908083835b6020831061033557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016102f8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260408051929094018281037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00183528085528251928201929092207fff000000000000000000000000000000000000000000000000000000000000008383015260609890981b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602183015260358201969096526055808201979097528251808203909701875260750182525084519484019490942073ffffffffffffffffffffffffffffffffffffffff81166000908152938490529390922054929350505060ff16156104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180610735603f913960400191505060405180910390fd5b81602001825188818334f5955050508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461053a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260468152602001806107b96046913960600191505060405180910390fd5b50505073ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790559392505050565b6000308484846040516020018083838082843760408051919093018181037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825280845281516020928301207fff000000000000000000000000000000000000000000000000000000000000008383015260609990991b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166021820152603581019790975260558088019890985282518088039098018852607590960182525085519585019590952073ffffffffffffffffffffffffffffffffffffffff81166000908152948590529490932054939450505060ff909116159050610697575060005b9392505050565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091523060601b6021830152603582018590526055808301859052835180840390910181526075909201835281519181019190912073ffffffffffffffffffffffffffffffffffffffff81166000908152918290529190205460ff161561072e575060005b9291505056fe496e76616c696420636f6e7472616374206372656174696f6e202d20636f6e74726163742068617320616c7265616479206265656e206465706c6f7965642e496e76616c69642073616c74202d206669727374203230206279746573206f66207468652073616c74206d757374206d617463682063616c6c696e6720616464726573732e4661696c656420746f206465706c6f7920636f6e7472616374207573696e672070726f76696465642073616c7420616e6420696e697469616c697a6174696f6e20636f64652ea265627a7a723058202bdc55310d97c4088f18acf04253db593f0914059f0c781a9df3624dcef0d1cf64736f6c634300050a0032
  1. Create the IMMUTABLE_CREATE2_FACTORY_ADDRESS contract at 0x0000000000ffe8b47b3e2130213b802212439497 by submitting:
cast send --rpc-url ${RPC_URL} --private-key ${PK} 0xcfa3a7637547094ff06246817a35b8333c315196 0x64e030870000000000000000000000000000000000000000f4b0218f13a6440a6f02000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000853608060405234801561001057600080fd5b50610833806100206000396000f3fe60806040526004361061003f5760003560e01c806308508b8f1461004457806364e030871461009857806385cf97ab14610138578063a49a7c90146101bc575b600080fd5b34801561005057600080fd5b506100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ec565b604080519115158252519081900360200190f35b61010f600480360360408110156100ae57600080fd5b813591908101906040810160208201356401000000008111156100d057600080fd5b8201836020820111156100e257600080fd5b8035906020019184600183028401116401000000008311171561010457600080fd5b509092509050610217565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561014457600080fd5b5061010f6004803603604081101561015b57600080fd5b8135919081019060408101602082013564010000000081111561017d57600080fd5b82018360208201111561018f57600080fd5b803590602001918460018302840111640100000000831117156101b157600080fd5b509092509050610592565b3480156101c857600080fd5b5061010f600480360360408110156101df57600080fd5b508035906020013561069e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b600083606081901c33148061024c57507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116155b6102a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806107746045913960600191505060405180910390fd5b606084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051855195965090943094508b93508692506020918201918291908401908083835b6020831061033557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016102f8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260408051929094018281037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00183528085528251928201929092207fff000000000000000000000000000000000000000000000000000000000000008383015260609890981b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602183015260358201969096526055808201979097528251808203909701875260750182525084519484019490942073ffffffffffffffffffffffffffffffffffffffff81166000908152938490529390922054929350505060ff16156104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180610735603f913960400191505060405180910390fd5b81602001825188818334f5955050508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461053a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260468152602001806107b96046913960600191505060405180910390fd5b50505073ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790559392505050565b6000308484846040516020018083838082843760408051919093018181037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825280845281516020928301207fff000000000000000000000000000000000000000000000000000000000000008383015260609990991b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166021820152603581019790975260558088019890985282518088039098018852607590960182525085519585019590952073ffffffffffffffffffffffffffffffffffffffff81166000908152948590529490932054939450505060ff909116159050610697575060005b9392505050565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091523060601b6021830152603582018590526055808301859052835180840390910181526075909201835281519181019190912073ffffffffffffffffffffffffffffffffffffffff81166000908152918290529190205460ff161561072e575060005b9291505056fe496e76616c696420636f6e7472616374206372656174696f6e202d20636f6e74726163742068617320616c7265616479206265656e206465706c6f7965642e496e76616c69642073616c74202d206669727374203230206279746573206f66207468652073616c74206d757374206d617463682063616c6c696e6720616464726573732e4661696c656420746f206465706c6f7920636f6e7472616374207573696e672070726f76696465642073616c7420616e6420696e697469616c697a6174696f6e20636f64652ea265627a7a723058202bdc55310d97c4088f18acf04253db593f0914059f0c781a9df3624dcef0d1cf64736f6c634300050a003200000000000000000000000000

Deploying Seaport and ConduitController

Once the IMMUTABLE_CREATE2_FACTORY_ADDRESS exists, begin to deploy the contracts:

  1. Deploy the ConduitController contract by submitting:
cast send --rpc-url ${RPC_URL} --private-key ${PK} 0x0000000000ffe8b47b3e2130213b802212439497 0x64e030870000000000000000000000000000000000000000dc0ef3c792976604960400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000302760c08060405234620000ea57600090610c9f906001600160401b03603f8301601f1916820181811183821017620000da575b604052828252620023889160208101908484833951902060805260405192839281840192831184841017620000ca575b8339039082f58015620000ba575b6001600160a01b03163f60a05260405161227490816200011482396080518181816102b101528181610bcc0152610d06015260a0518181816102d401528181610c620152610da90152f35b620000c462000106565b6200006f565b620000d4620000ef565b62000061565b620000e4620000ef565b62000031565b600080fd5b50634e487b7160e01b600052604160045260246000fd5b506040513d6000823e3d90fdfe60806040526004361015610013575b600080fd5b60003560e01c8063027cc7641461012b5780630a96ad391461012257806313ad9cab1461011957806314afd79e1461011057806333bc8572146101075780634e3f9580146100fe57806351710e45146100f55780636d435421146100ec5780636e9bfd9f146100e3578063794593bc146100da5780637b37e561146100d15780638b9e028b146100c8578063906c87cc146100bf576393790f44146100b757600080fd5b61000e61126e565b5061000e6111fa565b5061000e61113c565b5061000e610fc8565b5061000e610c8a565b5061000e610b3c565b5061000e6109bf565b5061000e610765565b5061000e6106f3565b5061000e61064f565b5061000e6105db565b5061000e6102fa565b5061000e61027b565b5061000e61017a565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361000e57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361000e57565b503461000e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e576101b2610134565b602435906101bf81611574565b73ffffffffffffffffffffffffffffffffffffffff80911691600083815280602052600360408220015482101561023f5790600360408361023b9661020a9552806020522001611400565b90549060031b1c166040519182918291909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b0390f35b602484604051907f6ceb340b0000000000000000000000000000000000000000000000000000000082526004820152fd5b600091031261000e57565b503461000e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e57604080517f000000000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006020820152f35b503461000e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e57610332610134565b61033a610157565b90604435918215918215840361000e5761035381611505565b73ffffffffffffffffffffffffffffffffffffffff811690813b1561000e576040517fc4e8fcb500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201528515156024820152610401926000908290604490829084905af180156105ce575b6105b5575b5073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b92600484019261043183859073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5491821590806105ae575b1561048157505050600361047d92930161045682826114ce565b54929073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b555b005b91949391816105a5575b5061049257005b6104df61047d938560037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600098019201916104ce83546113a4565b90808203610504575b505050611447565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b6105766105449161053b61051b61059c9588611400565b905473ffffffffffffffffffffffffffffffffffffffff9160031b1c1690565b92839187611400565b90919082549060031b9173ffffffffffffffffffffffffffffffffffffffff9283811b93849216901b16911916179055565b859073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b553880806104d7565b9050153861048b565b508061043c565b806105c26105c892611335565b80610270565b386103da565b6105d6611397565b6103d5565b503461000e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e576020610615610134565b61061e81611574565b73ffffffffffffffffffffffffffffffffffffffff8091166000526000825260016040600020015416604051908152f35b503461000e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5760206106e861068c610134565b73ffffffffffffffffffffffffffffffffffffffff6106a9610157565b916106b381611574565b166000526000835260046040600020019073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541515604051908152f35b503461000e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5773ffffffffffffffffffffffffffffffffffffffff610740610134565b61074981611574565b1660005260006020526020600360406000200154604051908152f35b503461000e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5761079d610134565b6107a681611574565b61080c6107f360026107d88473ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b33036109765761047f9060007f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da81604051a2610896600261086d8373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b017fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b73ffffffffffffffffffffffffffffffffffffffff3390806108dd60016107d88673ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b169083167fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec6000604051a46001610935339273ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b019073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6040517f88c3a11500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602490fd5b503461000e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e576109f7610134565b6109ff610157565b90610a0981611505565b73ffffffffffffffffffffffffffffffffffffffff808316908115610b095750610a5b6107f360026107d88573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b8114610ab95761093561047f93926002927f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da6000604051a273ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b506040517fcbc080ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291166024820152604490fd5b82602491604051917fa388d263000000000000000000000000000000000000000000000000000000008352166004820152fd5b503461000e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e576040517fff00000000000000000000000000000000000000000000000000000000000000602082019081523060601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602183015260043560358301527f0000000000000000000000000000000000000000000000000000000000000000605583015273ffffffffffffffffffffffffffffffffffffffff91610c3b81607581015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611356565b519020604080519290911673ffffffffffffffffffffffffffffffffffffffff811683523f7f000000000000000000000000000000000000000000000000000000000000000014602083015290f35b503461000e576040807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e57600435610cc6610157565b73ffffffffffffffffffffffffffffffffffffffff91828216908115610f9f57338160601c03610f7657610da46107f386516020810190610d8881610c0f7f0000000000000000000000000000000000000000000000000000000000000000883087917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b51902073ffffffffffffffffffffffffffffffffffffffff1690565b92833f7f000000000000000000000000000000000000000000000000000000000000000014610f3057947f4397af6128d529b8ae0442f99db1296d5136062597a15bbc61c1b2a6431a7d15610eca838060009961023b989796865180610c9f8082019082821067ffffffffffffffff831117610f23575b6115a0833903908df515610f16575b610e9c610e578973ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b91600183019073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b55835173ffffffffffffffffffffffffffffffffffffffff8716815260208101919091529081906040820190565b0390a15194859483167fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec8287a473ffffffffffffffffffffffffffffffffffffffff1682526020820190565b610f1e611397565b610e2a565b610f2b611305565b610e1b565b85517f6328ccb200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602490fd5b600485517fcb6e5344000000000000000000000000000000000000000000000000000000008152fd5b600485517f99faaa04000000000000000000000000000000000000000000000000000000008152fd5b503461000e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e57611000610134565b61100981611505565b73ffffffffffffffffffffffffffffffffffffffff9081811660009281845283602052600260408520015416156110ba575061108e600291837f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da81604051a273ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b017fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055604051f35b602490604051907f6b0136160000000000000000000000000000000000000000000000000000000082526004820152fd5b6020908160408183019282815285518094520193019160005b828110611112575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611104565b503461000e576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e57611175610134565b9061117f82611574565b73ffffffffffffffffffffffffffffffffffffffff91826000911681528082526003604082200192604051908193808654938481520195845280842093915b8383106111e15761023b866111d5818a0382611356565b604051918291826110eb565b84548116875295810195600194850194909201916111be565b503461000e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e576020611234610134565b61123d81611574565b73ffffffffffffffffffffffffffffffffffffffff8091166000526000825260026040600020015416604051908152f35b503461000e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5773ffffffffffffffffffffffffffffffffffffffff6112bb610134565b16600052600060205260406000205480156112db57602090604051908152f35b60046040517f4ca82090000000000000000000000000000000000000000000000000000000008152fd5b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161134957604052565b611351611305565b604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761134957604052565b506040513d6000823e3d90fd5b600181106113d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80548210156114185760005260206000200190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8054801561149f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061147c8282611400565b73ffffffffffffffffffffffffffffffffffffffff82549160031b1b1916905555565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b906105446114f692805490680100000000000000008210156114f8575b600182018155611400565b565b611500611305565b6114eb565b61150e81611574565b73ffffffffffffffffffffffffffffffffffffffff809116908160005260006020526001604060002001541633036115435750565b602490604051907fd4ed9a170000000000000000000000000000000000000000000000000000000082526004820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002054156112db5756fe60a080604052346100235733608052610c7690816100298239608051816103c50152f35b600080fdfe60806040526004361015610013575b600080fd5b6000803560e01c9081634ce34aa21461006657508063899e104c1461005d5780638df25d92146100545763c4e8fcb51461004c57600080fd5b61000e610362565b5061000e61027f565b5061000e6101ab565b346101465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101465760043567ffffffffffffffff8111610142576100b5903690600401610149565b9133815280602052604081205415610116575b8281106100fa576040517f4ce34aa2000000000000000000000000000000000000000000000000000000008152602090f35b8061011061010b6001938686610532565b6105c4565b016100c8565b807f93daadf2000000000000000000000000000000000000000000000000000000006024925233600452fd5b5080fd5b80fd5b9181601f8401121561000e5782359167ffffffffffffffff831161000e5760208085019460c0850201011161000e57565b9181601f8401121561000e5782359167ffffffffffffffff831161000e576020808501948460051b01011161000e57565b503461000e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5767ffffffffffffffff60043581811161000e576101fc903690600401610149565b9160243590811161000e5761021590369060040161017a565b919092600033815280602052604081205415610116575b8181106102685761023d8486610acb565b6040517f899e104c000000000000000000000000000000000000000000000000000000008152602090f35b8061027961010b6001938587610532565b0161022c565b503461000e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5760043567ffffffffffffffff811161000e576102cf90369060040161017a565b33600052600060205260406000205415610316576102ec91610acb565b60206040517f8df25d92000000000000000000000000000000000000000000000000000000008152f35b7f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81160361000e57565b503461000e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5760043561039e81610344565b6024359081151580830361000e5773ffffffffffffffffffffffffffffffffffffffff90817f00000000000000000000000000000000000000000000000000000000000000001633036105085761041f6104188473ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b5460ff1690565b1515146104b657816104a6846104767fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e29573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b60405193151584521691602090a2005b506040517f924e341e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201529015156024820152604490fd5b60046040517f6d5769be000000000000000000000000000000000000000000000000000000008152fd5b91908110156105425760c0020190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6004111561057b57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b35600481101561000e5790565b356105c181610344565b90565b60016105cf826105aa565b6105d881610571565b0361061357806105ed602061061193016105b7565b906105fa604082016105b7565b60a0610608606084016105b7565b92013592610712565b565b600261061e826105aa565b61062781610571565b0361069657600160a08201350361066c5780610648602061061193016105b7565b90610655604082016105b7565b6080610663606084016105b7565b92013592610882565b60046040517fefcc00b1000000000000000000000000000000000000000000000000000000008152fd5b60036106a1826105aa565b6106aa81610571565b036106e857806106bf602061061193016105b7565b6106cb604083016105b7565b6106d7606084016105b7565b90608060a085013594013592610990565b60046040517f7932f1fc000000000000000000000000000000000000000000000000000000008152fd5b9092604051926000947f23b872dd00000000000000000000000000000000000000000000000000000000865280600452816024528260445260208660648180885af1803d15601f3d1160018a51141617163d151581161561077c575b505050505050604052606052565b80863b15151661076e579087959691156107bc57602486887f5f15d672000000000000000000000000000000000000000000000000000000008252600452fd5b156107f657506084947f98891923000000000000000000000000000000000000000000000000000000008552600452602452604452606452fd5b3d610835575b5060a4947ff486bc8700000000000000000000000000000000000000000000000000000000855260045260245260445281606452608452fd5b601f3d0160051c9060051c908060030291808211610869575b505060205a91011061086057856107fc565b833d81803e3d90fd5b8080600392028380020360091c9203020101868061084e565b9092813b1561096257604051926000947f23b872dd000000000000000000000000000000000000000000000000000000008652806004528160245282604452858060648180885af1156108db5750505050604052606052565b8593943d61091e575b5060a4947ff486bc870000000000000000000000000000000000000000000000000000000085526004526024526044526064526001608452fd5b601f3d0160051c9060051c908060030291808211610949575b505060205a91011061086057856108e4565b8080600392028380020360091c92030201018680610937565b507f5f15d6720000000000000000000000000000000000000000000000000000000060005260045260246000fd5b929093833b15610a9d57604051936080519160a0519360c051956000987ff242432a000000000000000000000000000000000000000000000000000000008a528060045281602452826044528360645260a06084528960a452898060c48180895af115610a0d57505050505060805260a05260c052604052606052565b89949550883d610a50575b5060a4957ff486bc87000000000000000000000000000000000000000000000000000000008652600452602452604452606452608452fd5b601f3d0160051c9060051c908060030291808211610a84575b505060205a910110610a7b5786610a18565b843d81803e3d90fd5b8080600392028380020360091c92030201018780610a69565b837f5f15d6720000000000000000000000000000000000000000000000000000000060005260045260246000fd5b90816020907f2eb2c2d600000000000000000000000000000000000000000000000000000000825260005b838110610b095750505050506080604052565b8435820194853590813b156109625760a09182880192833560059181831b948b60c08097608094818301868501351490606085013514169201013584141615610c165789019a890160243760061b9360e0850160a452610104850194600086526040019060c437600080858982865af115610b8a5750505050600101610af6565b869394503d610bcb575b507fafc445e20000000000000000000000000000000000000000000000000000000060005260045260645260849081510190526000fd5b84601f3d01821c911c90600381810292808311610bff575b505050835a910110610bf55784610b94565b3d6000803e3d6000fd5b8080028380020360091c9203020101858080610be3565b7feba2084c0000000000000000000000000000000000000000000000000000000060005260046000fdfea2646970667358221220c5c8d054d9d5df7c3530eab1c32506aad1fcb6772c1457f0da5443ad9e91b4a364736f6c634300080e0033a264697066735822122031e2de61a9e35e9e87d5eef6a36b045a0bab54c4031fd01a0f8138afce3cec3164736f6c634300080e003360a080604052346100235733608052610c7690816100298239608051816103c50152f35b600080fdfe60806040526004361015610013575b600080fd5b6000803560e01c9081634ce34aa21461006657508063899e104c1461005d5780638df25d92146100545763c4e8fcb51461004c57600080fd5b61000e610362565b5061000e61027f565b5061000e6101ab565b346101465760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101465760043567ffffffffffffffff8111610142576100b5903690600401610149565b9133815280602052604081205415610116575b8281106100fa576040517f4ce34aa2000000000000000000000000000000000000000000000000000000008152602090f35b8061011061010b6001938686610532565b6105c4565b016100c8565b807f93daadf2000000000000000000000000000000000000000000000000000000006024925233600452fd5b5080fd5b80fd5b9181601f8401121561000e5782359167ffffffffffffffff831161000e5760208085019460c0850201011161000e57565b9181601f8401121561000e5782359167ffffffffffffffff831161000e576020808501948460051b01011161000e57565b503461000e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5767ffffffffffffffff60043581811161000e576101fc903690600401610149565b9160243590811161000e5761021590369060040161017a565b919092600033815280602052604081205415610116575b8181106102685761023d8486610acb565b6040517f899e104c000000000000000000000000000000000000000000000000000000008152602090f35b8061027961010b6001938587610532565b0161022c565b503461000e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5760043567ffffffffffffffff811161000e576102cf90369060040161017a565b33600052600060205260406000205415610316576102ec91610acb565b60206040517f8df25d92000000000000000000000000000000000000000000000000000000008152f35b7f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81160361000e57565b503461000e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261000e5760043561039e81610344565b6024359081151580830361000e5773ffffffffffffffffffffffffffffffffffffffff90817f00000000000000000000000000000000000000000000000000000000000000001633036105085761041f6104188473ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b5460ff1690565b1515146104b657816104a6846104767fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e29573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b60405193151584521691602090a2005b506040517f924e341e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201529015156024820152604490fd5b60046040517f6d5769be000000000000000000000000000000000000000000000000000000008152fd5b91908110156105425760c0020190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6004111561057b57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b35600481101561000e5790565b356105c181610344565b90565b60016105cf826105aa565b6105d881610571565b0361061357806105ed602061061193016105b7565b906105fa604082016105b7565b60a0610608606084016105b7565b92013592610712565b565b600261061e826105aa565b61062781610571565b0361069657600160a08201350361066c5780610648602061061193016105b7565b90610655604082016105b7565b6080610663606084016105b7565b92013592610882565b60046040517fefcc00b1000000000000000000000000000000000000000000000000000000008152fd5b60036106a1826105aa565b6106aa81610571565b036106e857806106bf602061061193016105b7565b6106cb604083016105b7565b6106d7606084016105b7565b90608060a085013594013592610990565b60046040517f7932f1fc000000000000000000000000000000000000000000000000000000008152fd5b9092604051926000947f23b872dd00000000000000000000000000000000000000000000000000000000865280600452816024528260445260208660648180885af1803d15601f3d1160018a51141617163d151581161561077c575b505050505050604052606052565b80863b15151661076e579087959691156107bc57602486887f5f15d672000000000000000000000000000000000000000000000000000000008252600452fd5b156107f657506084947f98891923000000000000000000000000000000000000000000000000000000008552600452602452604452606452fd5b3d610835575b5060a4947ff486bc8700000000000000000000000000000000000000000000000000000000855260045260245260445281606452608452fd5b601f3d0160051c9060051c908060030291808211610869575b505060205a91011061086057856107fc565b833d81803e3d90fd5b8080600392028380020360091c9203020101868061084e565b9092813b1561096257604051926000947f23b872dd000000000000000000000000000000000000000000000000000000008652806004528160245282604452858060648180885af1156108db5750505050604052606052565b8593943d61091e575b5060a4947ff486bc870000000000000000000000000000000000000000000000000000000085526004526024526044526064526001608452fd5b601f3d0160051c9060051c908060030291808211610949575b505060205a91011061086057856108e4565b8080600392028380020360091c92030201018680610937565b507f5f15d6720000000000000000000000000000000000000000000000000000000060005260045260246000fd5b929093833b15610a9d57604051936080519160a0519360c051956000987ff242432a000000000000000000000000000000000000000000000000000000008a528060045281602452826044528360645260a06084528960a452898060c48180895af115610a0d57505050505060805260a05260c052604052606052565b89949550883d610a50575b5060a4957ff486bc87000000000000000000000000000000000000000000000000000000008652600452602452604452606452608452fd5b601f3d0160051c9060051c908060030291808211610a84575b505060205a910110610a7b5786610a18565b843d81803e3d90fd5b8080600392028380020360091c92030201018780610a69565b837f5f15d6720000000000000000000000000000000000000000000000000000000060005260045260246000fd5b90816020907f2eb2c2d600000000000000000000000000000000000000000000000000000000825260005b838110610b095750505050506080604052565b8435820194853590813b156109625760a09182880192833560059181831b948b60c08097608094818301868501351490606085013514169201013584141615610c165789019a890160243760061b9360e0850160a452610104850194600086526040019060c437600080858982865af115610b8a5750505050600101610af6565b869394503d610bcb575b507fafc445e20000000000000000000000000000000000000000000000000000000060005260045260645260849081510190526000fd5b84601f3d01821c911c90600381810292808311610bff575b505050835a910110610bf55784610b94565b3d6000803e3d6000fd5b8080028380020360091c9203020101858080610be3565b7feba2084c0000000000000000000000000000000000000000000000000000000060005260046000fdfea2646970667358221220c5c8d054d9d5df7c3530eab1c32506aad1fcb6772c1457f0da5443ad9e91b4a364736f6c634300080e003300000000000000000000000000000000000000000000000000
  1. Deploy the Seaport 1.6 contract by submitting:
cast send --rpc-url ${RPC_URL} --private-key ${PK} 0x0000000000ffe8b47b3e2130213b802212439497 0x64e030870000000000000000000000000000000000000000d738b7f0bb99901b1c83f2490000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000652f61020060405234620000f7576200001f6200001962000171565b620001ae565b604051615dad908162000762823960805181613c90015260a05181613cb4015260c05181613c6d015260e051818181611252015261200f0152610100518181816112a00152611eba01526101205181818161130b015261208401526101405181613c1d01526101605181613c43015261018051818181610f1601528181612495015261429501526101a0518181816124d301526142d301526101c0518181816104cd01528181611de7015281816127170152818161275c015281816130a401528181613101015261315e01526101e051816104ff0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176200012b57604052565b620000fb565b60a081019081106001600160401b038211176200012b57604052565b601f909101601f19168101906001600160401b038211908210176200012b57604052565b6200650f602081380391826040519384926200018e82856200014d565b833981010312620000f757516001600160a01b0381168103620000f75790565b620001b86200063c565b610120526101005260e05260c05260a05260805246610140526200020560c0519060805160a051604051935f5281602052604052466060523060805260a05f20926040525f606052608052565b610160526001600160a01b0390811661018081905260408051630a96ad3960e01b815291829060049082905afa908115620002ca575f9162000293575b506101a05262000251620002f2565b908116156200028157620002658162000308565b90816101c0526101e052156200027757565b600163929eee1455565b604051632aea588760e01b8152600490fd5b620002ba915060403d604011620002c2575b620002b181836200014d565b810190620002d0565b505f62000242565b503d620002a5565b620002e7565b9190826040910312620000f7576020825192015190565b6040513d5f823e3d90fd5b696002601e613d5c3d52f35f52600a60165ff090565b5f80808093600a5a04fa3d156200034f573d6001600160401b0381116200012b576040519062000343601f8201601f1916602001836200014d565b81525f60203d92013e90565b90565b6040519060c082016001600160401b038111838210176200012b576040526084825263656e742960e01b60a0837f436f6e73696465726174696f6e4974656d2875696e7438206974656d5479706560208201527f2c6164647265737320746f6b656e2c75696e74323536206964656e746966696560408201527f724f7243726974657269612c75696e74323536207374617274416d6f756e742c60608201527f75696e7432353620656e64416d6f756e742c616464726573732072656369706960808201520152565b6040519061010082016001600160401b038111838210176200012b5760405260d482527f4b65792c75696e7432353620636f756e7465722900000000000000000000000060e0837f4f72646572436f6d706f6e656e74732861646472657373206f6666657265722c60208201527f61646472657373207a6f6e652c4f666665724974656d5b5d206f666665722c4360408201527f6f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f6e60608201527f2c75696e7438206f72646572547970652c75696e74323536207374617274546960808201527f6d652c75696e7432353620656e6454696d652c62797465733332207a6f6e654860a08201527f6173682c75696e743235362073616c742c6279746573333220636f6e6475697460c08201520152565b60405190608082016001600160401b038111838210176200012b576040526052825271766572696679696e67436f6e74726163742960701b6060837f454950373132446f6d61696e28737472696e67206e616d652c737472696e672060208201527f76657273696f6e2c75696e7432353620636861696e49642c616464726573732060408201520152565b908151915f5b838110620005ec575050015f815290565b8060208092840101518185015201620005db565b6200062b620006249493620006246200063a946040519788956020870190620005d5565b90620005d5565b03601f1981018452836200014d565b565b6040516200064a816200010f565b60078152600760208092016614d9585c1bdc9d60ca1b8152209160038260405162000675816200010f565b828152016218971b60e91b81522091604051620006928162000131565b606a8152818101927f4f666665724974656d2875696e7438206974656d547970652c6164647265737384527f20746f6b656e2c75696e74323536206964656e7469666965724f72437269746560408301527f7269612c75696e74323536207374617274416d6f756e742c75696e7432353620606083015269656e64416d6f756e742960b01b60808301526200072662000352565b9262000759620007356200041b565b93620007406200054a565b8381519101209681519020958051848201209562000600565b80519101209056fe60806040526004361015610022575b3615610018575f80fd5b610020611de5565b005b5f3560e01c80156100ec57806306fdde031461013757806346423aa7146101325780635b34b9661461012d5780637423eb3c1461012857806379df72bd1461012357806387201b411461011e5780638814773214610119578063a817440414610114578063a900866b1461010f578063b3a34c4c1461010a578063e7acab2414610105578063ed98a57414610100578063f07ec373146100fb578063f2d12b12146100f6578063f47b7740146100f1578063fb0f3ee1146100ec5763fd9f1e100361000e57610f46565b610191565b610ec2565b610ded565b610d89565b610cc6565b610c0a565b610b8b565b610b24565b610a72565b6108e5565b6107d6565b6105b2565b610493565b6103f0565b610372565b61032e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9060208282011261018d576004359167ffffffffffffffff831161018d57826102409203011261018d5760040190565b5f80fd5b61019a3661013c565b5061012435600381169060021c60018111913415830361032857600382117f0203020301010000000000000000000000000000000000000000000000000000831a61020f8160a0840260240135877d010102030000000000000000000000000000000000000000000000000000881a87611e80565b9490928060051b6101c4013596610225816106b9565b61027557505060443560243517610268576102509461024391612584565b61024b612649565b6126c5565b610258612715565b60405160018152602090f35b0390f35b636ab37ce75f526004601cfd5b61024b925061025096916102bd9161028b611201565b93848361029882956106b9565b600281036102c257506102b8916101043560e4353360843560c4356122a2565b6123b1565b61245b565b6102cb816106b9565b600381036102eb57506102b8916101043560e4353360843560c4356121af565b806102f76004926106b9565b03610312576102b891606435604435608435336024356122a2565b6102b891606435604435608435336024356121af565b34611e70565b3461018d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d57602080526707536561706f727460475260606020f35b3461018d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d576004355f526001602052608060405f20546040519060ff81161515825260ff8160081c16151560208301526effffffffffffffffffffffffffffff8160101c16604083015260881c6060820152f35b3461018d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d5761042661275a565b335f525f602052602060405f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff43014060801c018091556040518181527f721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f833392a2604051908152f35b3461018d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d5763929eee1460018154147f00000000000000000000000000000000000000000000000000000000000000009081156105a9575b5061057f575f8080807f0000000000000000000000000000000000000000000000000000000000000000600a5a04fa3d1561057a573d61053b610536826111c7565b611148565b9081525f60203d92013e5b15610550575f9055005b60046040517f70a4078f000000000000000000000000000000000000000000000000000000008152fd5b610546565b60046040517ff45b98b0000000000000000000000000000000000000000000000000000000008152fd5b9050155f6104f4565b3461018d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261018d576004359067ffffffffffffffff821161018d5761016090823603011261018d5761062663ffffffff6020921661014461061d82600401615c33565b91013590611245565b604051908152f35b9181601f8401121561018d5782359167ffffffffffffffff831161018d576020808501948460051b01011161018d57565b73ffffffffffffffffffffffffffffffffffffffff81160361018d57565b60a4359061068a8261065f565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600611156106c357565b61068c565b60809080516106d6816106b9565b83528160208201519173ffffffffffffffffffffffffffffffffffffffff80931660208601526040810151604086015260608101516060860152015116910152565b9081518082526020808093019301915f5b828110610737575050505090565b909192938260e0600192604088516107508382516106c8565b8085015173ffffffffffffffffffffffffffffffffffffffff1660a0840152015160c082015201950193929101610729565b909291604082019160408152845180935260608101926020809601905f5b8181106107c0575050506107bd9394506020818403910152610718565b90565b82511515865294870194918701916001016107a0565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d5767ffffffffffffffff60043581811161018d5761082190369060040161062e565b505060243581811161018d5761083b90369060040161062e565b505060443581811161018d5761085590369060040161062e565b505060643590811161018d5761086f90369060040161062e565b505061088861087c61067d565b60c4359060843561105c565b9061026460405192839283610782565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261018d576004359067ffffffffffffffff821161018d576108e19160040161062e565b9091565b3461018d576108f336610898565b5050600461090b63ffffffff600435166004016115e1565b9061091461275a565b8151905f92361515935b8381106109315760405160018152602090f35b61093b81836116ac565b519081519184608084015161094f816116c0565b610958816116c0565b14610a5757825173ffffffffffffffffffffffffffffffffffffffff169261097f81612dad565b610991815f52600160205260405f2090565b9461099d8a8784612e07565b506109b06109ac875460ff1690565b1590565b6109c4575b50505050600191505b0161091e565b60608301515161014084015103610a5257600195610a0c610a37928460207ff280791efe782edcf06ce15c8f4dff17601db3b88eb3805a0db7d77faf757f0498015191612ec8565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b610a46604051928392836117f1565b0390a15f8080806109b5565b612ebb565b50600191506109be565b9060206107bd928181520190610718565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d5760043567ffffffffffffffff80821161018d57610abc368360040161062e565b505060243590811161018d5761026491610b1091610add368260040161062e565b5050610b08610af563ffffffff8094166004016118e9565b92610afe6111a4565b9216600401611948565b9033926119ce565b604051918291602083526020830190610718565b3461018d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d5773ffffffffffffffffffffffffffffffffffffffff600435610b748161065f565b165f526002602052602060405f2054604051908152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60408136011261018d576004359067ffffffffffffffff821161018d57604090823603011261018d57610c00610bec63ffffffff60209316600401611aa3565b610bf46111a4565b90339160243591611bf5565b6040519015158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60808136011261018d576004359067ffffffffffffffff9081831161018d5760a090833603011261018d5760243590811161018d5761026491610cb491610c75368260040161062e565b5050610ca460643592610c878461065f565b610c9a63ffffffff809216600401611d2f565b9216600401611426565b9133811502019160443591611bf5565b60405190151581529081906020820190565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d57600467ffffffffffffffff813581811161018d57610d103682850161062e565b50506024359082821161018d57610d293683860161062e565b505060443592831161018d57610d7a61088894610d483686830161062e565b5050610d5c63ffffffff80941682016118e9565b92610d7281610d696111a4565b961683016114b5565b9516016114b5565b60843593339360643593611514565b3461018d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d576020610626600435610dc98161065f565b73ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f205490565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d5767ffffffffffffffff6004803582811161018d57610e373682840161062e565b50506024359083821161018d57610e503683850161062e565b505060443593841161018d5761026493610eaa610eb694610e733684830161062e565b5050610e99610ea260643595610e888761065f565b63ffffffff928380921685016113c7565b97168301611426565b931601611948565b913381150201926119ce565b60405191829182610a61565b3461018d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018d57610ef8613c1a565b60605f5260205273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166040526303312e3660635260a05ff35b3461018d57610f5436610898565b90610f5d61275a565b5f915f5b818110610f7e5783610f795760405160018152602090f35b613cf0565b80610f8c6001928486611d8e565b94610f9686611dce565b907f6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d610fef610fc760208a01611dce565b92610fd460808b01611dd8565b60048533148733141715911417179861014061061d82615c33565b91611031611005845f52600160205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016610100179055565b60405192835273ffffffffffffffffffffffffffffffffffffffff908116931691602090a301610f61565b906108e1929163ffffffff9161107883600435166004016113c7565b926110898160243516600401611426565b6110a961109c83604435166004016114b5565b92606435166004016114b5565b92338115020194611514565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040519060a0820182811067ffffffffffffffff82111761110257604052565b6110b5565b60405190610160820182811067ffffffffffffffff82111761110257604052565b604051906040820182811067ffffffffffffffff82111761110257604052565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761110257604052565b67ffffffffffffffff81116111025760051b60200190565b6040516020810181811067ffffffffffffffff821117611102576040525f815290565b67ffffffffffffffff811161110257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b611209611128565b90602082526020828136910137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91909161014081018051917f0000000000000000000000000000000000000000000000000000000000000000604051604083018051928351926020809501905f915b868684106113865750505050506040519160051b8220917f00000000000000000000000000000000000000000000000000000000000000009093606086019481865101905f915b8a83106113445750505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08660051b604051209401978851907f00000000000000000000000000000000000000000000000000000000000000008a5282519383528451958552865261018089209852525252565b8380827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0600194510180519089815260e08120875252019201920191906112ce565b80827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0600194510180519088815260c0812087525201920192019190611287565b9081359163ffffffff90641fffffffe08460051b1690604051906020936020848401016040528083971683525f5b84811061140457505050505050565b8061141a87848180958801013516860101611d2f565b828287010152016113f5565b9081359063ffffffff92600593641fffffffe08460051b16906040805191602094858585010183528184981684525f5b8581106114695750505050505050909150565b8083888093850101351683018551908360a091828401895287608093848484018737820135160101908d60018884351601901b8851928184018a52833782015282828801015201611456565b9081359163ffffffff90641fffffffe08460051b1690604051906020936020848401016040528083971683525f5b8481106114f257505050505050565b8061150887848180958801013516860101612879565b828287010152016114e3565b96948093949296611528923615908a6128d4565b93909186519082519261154361153e8585612cee565b612d4b565b98865f5b8b8d8783106115ab5750505050505f5b8481106115735750505050508461156f9495966147a8565b9190565b806115a48b611590868f611589600197896116ac565b5190614665565b61159d88850180936116ac565b528c6116ac565b5001611557565b826115c76001956115cd936115c0848a6116ac565b519061461f565b926116ac565b526115d8818d6116ac565b50018790611547565b9081359163ffffffff641fffffffe08460051b1690604090815190602094858584010184528183981683525f5b85811061161e5750505050505050565b80838880938501013516830161165d838851928984016101a085018b5261164e81848b8186013516850101613046565b8452878a820135160101613078565b838201528282870101520161160e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051156116a75760200190565b61166d565b80518210156116a75760209160051b010190565b600511156106c357565b5160058110156106c35790565b9081518082526020808093019301915f5b8281106116f6575050505090565b909192938260a06001928751805161170d816106b9565b82528084015173ffffffffffffffffffffffffffffffffffffffff1684830152604080820151908301526060808201519083015260809081015190820152019501939291016116e8565b9081518082526020808093019301915f5b828110611776575050505090565b909192938260c06001928751805161178d816106b9565b82528084015173ffffffffffffffffffffffffffffffffffffffff9081168584015260408083015190840152606080830151908401526080808301519084015260a091820151169082015201950193929101611768565b9060058210156106c35752565b9081526040602082015261181e60408201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015173ffffffffffffffffffffffffffffffffffffffff1660608201526101806040830151611895611861610160928360808701526101a08601906116d7565b60608601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08683030160a0870152611757565b936118a8608082015160c08601906117e4565b60a081015160e085015260c081015191610100928386015260e082015192610120938487015282015192610140938487015282015190850152015191015290565b9081359163ffffffff90641fffffffe08460051b1690604051906020936020848401016040528083971683525f5b84811061192657505050505050565b8061193c87848180958801013516860101611aa3565b82828701015201611917565b9081359163ffffffff641fffffffe08460051b1690604090815190602094858584010184528183981683525f5b8581106119855750505050505050565b8083888093850101351683016119be838851928984018a526119af82898184013516830101612879565b8452878a820135160101612879565b8382015282828701015201611975565b939290816119e39186519036151590886128d4565b9190805160051b6040017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082018051907f4b9f2d36e1b4c93de62cc077b00b1a91d84b6c31b4a14e012718dcca230689e76020936020835282a152845190611a4a82612d4b565b955f5b838110611a68575050505083611a649495966147a8565b5090565b80611a87818c611a7a600195876116ac565b5187815191015191614bed565b611a91828b6116ac565b52611a9c818a6116ac565b5001611a4d565b906040516102008101604052611ae9819360a08301808452611acf63ffffffff91828435168401613046565b600160208501526001604085015260208201351601613078565b6060820152608060405191602083016040525f83520152565b611b0a611128565b9060018252815f5b60209081811015611b9557602091611b286110e2565b90611b31611107565b5f81525f828201526060905f60408381840152838084015260809282848201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152865281858701528501528180850152830152828501015201611b12565b505050565b611ba2611128565b600181529060203681840137565b90611bbd6105368361118c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611beb829461118c565b0190602036910137565b909192611cfd93825192608084015191611c0e836116c0565b611c17836116c0565b60048314611c248161315c565b36151590611c5d611c3583866131d2565b93919290929a611c43611b02565b88611c4d8261169a565b52611c578161169a565b506133d1565b611c698884848c61353b565b611c7a611c74611b9a565b976116c0565b611d0a578593611ca08694611ca8948a94611c9a8e611cb89c819c6136db565b8961383b565b505b88613944565b82611cb28361169a565b52613a36565b815173ffffffffffffffffffffffffffffffffffffffff165b602083015173ffffffffffffffffffffffffffffffffffffffff16906060604085015194015194613b3b565b611d05612715565b600190565b505084965091611ca8611d27611cb895939460808401518961361c565b978894611ca2565b9060405161020081016040526080611d898294604060208201602086013760a08401808552611d6863ffffffff91828435168401613046565b611d79816060840135168301613078565b6060860152838201351601613078565b910152565b91908110156116a75760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18136030182121561018d570190565b356107bd8161065f565b35600581101561018d5790565b7f000000000000000000000000000000000000000000000000000000000000000080611e51575b15611e1357565b63929eee14805480159182611e42575b5060031415901516611e3157565b63a61be9f05f52346020526024601cfd5b6002905c03611e31575f611e23565b600263929eee145c0315611e0c5763a61be9f05f52346020526024601cfd5b63a61be9f05f526020526024601cfd5b93929190611e8c6130a2565b611e94613cfd565b6101643561014435428211154282111761219c57505061020435610264351061218f57927f00000000000000000000000000000000000000000000000000000000000000006080528360a0526060602460c037604060646101203760e0608090812061016052600161026435016102043560051b6102a08101919091526102c081019586526024906102e00137610160938260a0528360c0525f60e0525f915f5b8261020435821015611f925790604060019261010060a060208560061b99818b610284018537858b61028401610120376102a48b0135179c019760e0608020895201978989528a60c0840152610284019101370195929195611f35565b509550969590916001610204350160051b610160206060525b8261026435871015611fea5790604060a060019301948686528760c08201526101008960061b610284019101376102a48760061b013517950194611fab565b5092509593505073ffffffffffffffffffffffffffffffffffffffff915011612182577f00000000000000000000000000000000000000000000000000000000000000006080528060a052606060c460c03760206101046101203760c06080205f5260205f2060e0526103c0608435916120818373ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f2090565b547f00000000000000000000000000000000000000000000000000000000000000006080526040608460a03760605161010052856101205260a0610144610140376101e090815261018060808181206102043560051b928301818152336101a08501526101c084019290925261012083850152600161020084015261022083019490945292949060609060c49061024001377f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f3160a06102643502938460a435940190a35f6060526102043560051b010160405261156f61216a61216383613d53565b9483613d9e565b93710100000000000000000000000000000100019055565b6339f3e3fd5f526004601cfd5b63466aa6165f526004601cfd5b6321ccfeb75f526020526040526044601cfd5b9590919293946121be86613e6f565b6121c88183613e83565b806121d857505061068a94613f63565b90606495969493929160208251145f1461228f5760c0906001906040845260208401527f4ce34aa2000000000000000000000000000000000000000000000000000000006040840152602060448401526001888401525b02019360037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48601527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe48501526004840152602483015260448201520152565b5060c0868201600181510180915261222f565b919396959092946122b38183613e83565b806122d3575050600186036122cd5761068a949550614071565b85614061565b81519697966064969395939492919060200361238c5760c0906001906040845260208401527f4ce34aa2000000000000000000000000000000000000000000000000000000006040840152602060448401526001888401525b02019360027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48601527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe48501526004840152602483015260448201520152565b5060c0868201600181510180915261232c565b919082039182116123ac57565b611218565b919082156124485760843592610104353360c43560e4355b612443578360051b6101e40335936102643560061b905f5b8281106123f6575050509561068a9596614133565b87876102848301358c85612422575b9184939161241c936102a46040970135908a614133565b016123e1565b989181612436604096959361241c9561239f565b9a91935091939450612405565b610268565b33926064356084356024356044356123c9565b604081510361258157602081015160c06064830151026044019060205f73ffffffffffffffffffffffffffffffffffffffff9360405194807f00000000000000000000000000000000000000000000000000000000000000001674ff00000000000000000000000000000000000000001783528484527f00000000000000000000000000000000000000000000000000000000000000006040526055600b2016946040528180526040860182865af15f519015612568577fffffffff000000000000000000000000000000000000000000000000000000007f4ce34aa20000000000000000000000000000000000000000000000000000000091160361256357505060209052565b61543d565b82612571614f3d565b63d13d53d45f526020526024601cfd5b50565b60c43592916101043560e43560843583156126005761068a95966125a784613e6f565b604051957f4ce34aa200000000000000000000000000000000000000000000000000000000875260206004880152600160248801526044870152606486015260848501523360a485015260c484015260e4830152614272565b9195925092806126116002926106b9565b03612631576001850361262b5761068a9394503391614071565b84614061565b9084929161264261068a9596613e6f565b3391613f63565b346064355f6102643560061b5b80821061268d575050818111612688576126728160843561435b565b80821161267d575050565b61068a91033361435b565b6126b8565b9092836102840135938185116126b8576126b18560409303956102a483013561435b565b0190612656565b638ffff9805f526004601cfd5b919060a435908133141590600460018211911016166126e357505050565b61270f92601c83516317b1f9428552600163ffffffff82165263fb5014fc60605260801c930191614390565b5f606052565b7f00000000000000000000000000000000000000000000000000000000000000006127515763929eee1480541561274c5760019055565b5f905d565b5f63929eee145d565b7f0000000000000000000000000000000000000000000000000000000000000000806127b9575b1561278857565b63929eee1480549081156127ae575b506001106127a157565b637fa8a9875f526004601cfd5b5c6127a1575f612797565b63929eee145c1561278157637fa8a9875f526004601cfd5b90813563ffffffff811692604051938085526020641fffffffe0819460051b16860101928392602060a080940291018537602086015b8381106128175750505050604052565b848152938201938101612807565b90813563ffffffff811692604051938085526020641fffffffe0819460051b16860101928392602060c080940291018537602086015b83811061286b5750505050604052565b84815293820193810161285b565b908135916040926040519363ffffffff82168552602080641fffffffe08460051b16870101936020643fffffffc0869560061b1691018537602086015b8381106128c65750505050604052565b8481529382019381016128b6565b939492915f946128e26130ff565b5f357c4000000000000000000000000000000000000000000000000000000000169681519361291085611bb0565b9860205b6001870160051b8110612b5757507c400000000000000000000000000000000000000000000000000000000114612b5257612954908392969594936133d1565b5f946020945b6001850160051b8610612979575050505050501561297457565b614612565b909192939495868a01918251918215612b435788860151938215612ad057878d8b608060046129aa828b51016116ca565b6129b3816116c0565b14612ae75750916109ac91877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6129ef9560051c01918a61447b565b612ad0576020850190612a556109ac612a1784516effffffffffffffffffffffffffffff1690565b60408901516effffffffffffffffffffffffffffff1690612a398d8b516145dc565b916effffffffffffffffffffffffffffff80911691168961383b565b612ab957505050907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612aa5925b01925184611cd1825173ffffffffffffffffffffffffffffffffffffffff1690565b6001602081975b019594939291905061295a565b602093955060019450905f80929b939b5252612aac565b6001935060208093955f80939c949c520152612aac565b915050612afc9295508651908701519061361c565b8093528215612b315750907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612aa592612a83565b97600192505f60208093950152612aac565b97602091935060019250612aac565b61446e565b8a81860151612b6688826131d2565b6effffffffffffffffffffffffffffff821660208501529093909291908415612ce1576effffffffffffffffffffffffffffff84166040840152850152805160a08101519160c082015191608001519e8f612bc0816116c0565b600110179e815160400151908151905f925b828410612c6b5750505050606090510151938451945f5b868110612c0157505050505050506020905b01612914565b80612c0e600192846116ac565b516080810160a0612c2182518b896143f9565b92612c4a60608201948c8651865181145f14612c5a5750508086525b8a8c36151592885161442b565b8094520190815190525201612be9565b612c64918c6143f9565b8652612c3d565b90919299612c798b836116ac565b519060048410825110179a608082018051612c95908b8d6143f9565b92606001908a8251948d835187145f1496612cc493600198612cd1575050508084525b8a8c361592865161442b565b8092525201929190612bd2565b612cda926143f9565b8452612cb8565b5050505050602090612bfb565b919082018092116123ac57565b604051906060820182811067ffffffffffffffff821117611102576040525f604083612d256110e2565b838152836020820152838382015283606082015283608082015281528260208201520152565b90612d586105368361118c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612d86829461118c565b01905f5b828110612d9657505050565b602090612da1612cfb565b82828501015201612d8a565b6060810151516101408201511161218f5780612e0173ffffffffffffffffffffffffffffffffffffffff6107bd93511673ffffffffffffffffffffffffffffffffffffffff165f525f60205260405f205490565b90611245565b91905460ff8160081c16612e63576effffffffffffffffffffffffffffff8160101c169081612e3a575b50505050600190565b60881c1115612e4a578080612e31565b612e5357505f90565b6310fda3e15f526020526024601cfd5b50612e6d57505f90565b631a5155745f526020526024601cfd5b91905460ff8160081c16612e63576effffffffffffffffffffffffffffff915060101c16612eab5750600190565b63ee9e0e635f526020526024601cfd5b632165628a5f526004601cfd5b92919033841461304057612eda613c1a565b93612f1482867f19010000000000000000000000000000000000000000000000000000000000005f5260025260225260425f20905f602252565b908351926002601f601d860116106102e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d860110165f146130325760018085169081604103927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60059388010160051c93808952880160209384820151928560238560e81c94019460e31c169081528584519118526001925b8684106130135750505050509661300d9161068a9798612fd160405f209261570a565b5f525260405f20907f19010000000000000000000000000000000000000000000000000000000000005f5260025260225260425f20905f602252565b90614a07565b85859101938684821c841b1660405f2081528786519118520192612fae565b5061068a9495508190614a07565b50509050565b611d8960609161016081853763ffffffff6130688160408401351683016127d1565b6040860152838201351601612825565b9060206040519263ffffffff813563ffffffe0601f82011692848401908737168452830101604052565b7f00000000000000000000000000000000000000000000000000000000000000006130ee5763929eee14805480156130e1576001036127a15760029055565b50805c6127a1576001905d565b63929eee14805c6127a1576001905d565b7f000000000000000000000000000000000000000000000000000000000000000061314b5763929eee148054801561313e576001036127a15760039055565b50805c6127a1576002905d565b63929eee14805c6127a1576002905d565b7f00000000000000000000000000000000000000000000000000000000000000006131ab5763929eee14908154801561319d576001036127a1576002019055565b50815c6127a157600101905d565b63929eee1490815c6127a157600101905d565b90805b6131c9575090565b809106806131c1565b9190918051916131ef6109ac8560a086015160c087015190614d1d565b6133bc576effffffffffffffffffffffffffffff6020816020850151169482604086015116946080820160048151613226816116c0565b61322f816116c0565b146133a35787158789111761339e575191613249836116c0565b600180931615878910166133995761326081612dad565b986132816109ac6132798c5f52600160205260405f2090565b92838d612e07565b61338b5754918960ff841615613357575b5050508060881c918483159260101c1691156132b0575b5050505050565b86979614613343578187146133265786829102950295029385019484861185870302809103958386116132e4575b806132a9565b856132fe926132f8929894959798036131be565b826131be565b8015018091049404928311613315578080806132de565b601190634e487b715f52526024601cfd5b925050508291939201828082119103029003915f808080806132a9565b8103955093505f91508190508080806132a9565b606061337a613383945173ffffffffffffffffffffffffffffffffffffffff1690565b92015191612ec8565b5f8089613292565b505f97508796505050505050565b614d4b565b614d3e565b50505050509250600191021861339e5760019081908290565b5f9350839250829150565b600211156106c357565b81518151925f5b82811061346f575050505f5b8281106133f057505050565b806133fd600192846116ac565b5161343161341d60208301516effffffffffffffffffffffffffffff1690565b6effffffffffffffffffffffffffffff1690565b15613469576134639051604060808201519161344c836116c0565b61345b83606083015187614e36565b015183615d44565b016133e4565b50613463565b61347981836116ac565b518051868110156135285761348e90866116ac565b516020906134b061341d838301516effffffffffffffffffffffffffffff1690565b1561351d57519060409081830151918401519263bfb3f8ce918501516134d5816133c7565b6134de816133c7565b61350a575b5081518310156135025750916134fc9160019493614d74565b016133d8565b5f526004601cfd5b9050606091500151636088d7de5f6134e3565b5050506001906134fc565b6020820151613536816133c7565b614d58565b60a08082015160c0830151604084018051513615985f989597959492895b8381106135d7575050505060809660046080870151613577816116c0565b1016612b52576060948501805151981593905f5b8a811061359f575050505050505050505050565b808a8a8a8a6135cb8b8b8b8b6135b860019b8d516116ac565b51968701958651998801998a5190614e92565b9052015190520161358b565b82888d838551906135e7916116ac565b519d8e516135f4816106b9565b15179d60608101918a8a8d85519460800196875161361196614e92565b905252600101613559565b919091606081019182515161014083015103612ebb575f8061365c613655855173ffffffffffffffffffffffffffffffffffffffff1690565b9685614ed1565b9082885af19361368a8173ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2090565b9081549160018301905560601b1893156136c25750604001906136b08251825190615c7f565b9390916136bc57525290565b84614f86565b9150506136ce57505f90565b6136d6614f3d565b614f86565b91825190608082015160058110156106c357602083019261372073ffffffffffffffffffffffffffffffffffffffff9283865116331415906004600182119110161690565b61372d575b505050505050565b61381a601c91608061382c980151965f6040519889936301e4d72a85526020808601528860408601523360608601528051608086015260a081015161012086015261014060c08201518187015260e08201516101608701528060a08701526138016040830151936137d76137a761018096878b0190615b45565b80850160c08b01526137c2606087015188838d010190615bb9565b019184830160e08b015286838b010190615ba0565b0193610100928501838901528085890101946137f38689615c03565b016101648101980101604052565b828660401b8d60801b1717910152525160051b9061239f565b9463fb5014fc60605201925116614390565b5f6060525f8080808080613725565b61384d815f52600160205260405f2090565b935f938554948560881c90811561393a57506effffffffffffffffffffffffffffff809660101c1681831461392b578282910292029402019383851190808511818711176138f3575b505b6138b057505060881b9060101b176001179055600190565b92509250505f146138ee576040517f10fda3e10000000000000000000000000000000000000000000000000000000081526004810191909152602490fd5b505f90565b93946138ff86826131be565b80150180910495049380851190861117613919575f613896565b634e487b715f5260116020526024601cfd5b92955050920192828411613898565b9550509293613898565b92919092613950611201565b916040820190815151915f5b8381106139ed5750505050606080910190815151915f5b83811061399c575050505061398991925061245b565b47806139925750565b61068a903361435b565b6139a78183516116ac565b5190858883516139b6816106b9565b6139bf816106b9565b156139da575b906139d491600194339061516a565b01613973565b50504784830151116126885785886139c5565b80613a30876139ff60019486516116ac565b51866080820152613a24895173ffffffffffffffffffffffffffffffffffffffff1690565b6101208a01519161516a565b0161395c565b919091805192608084019182519260058410156106c357613a846020870194613a73865173ffffffffffffffffffffffffffffffffffffffff1690565b331415906004600182119110161690565b15613aaf575050613a9d9061010061270f950151615416565b9290915163fb5014fc5b606052614390565b60049195935051613abf816116c0565b613ac8816116c0565b03613af55761270f93613ae89183519360808560601b9301519086615392565b9290916393979285613aa7565b50505050565b9081518082526020808093019301915f5b828110613b1a575050505090565b909192938260a082613b2f60019489516106c8565b01950193929101613b0c565b9094939173ffffffffffffffffffffffffffffffffffffffff91604090604051956080926080880192885285602092166020890152608060408901528651809352602060a089019701935f915b848310613bd6575050505050508282859493613bd193867f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31989603606087015216971695613afb565b0390a3565b90919293949784836001928b518051613bee816106b9565b8252808401518c1684830152858101518683015260609081015190820152019901959493019190613b88565b467f000000000000000000000000000000000000000000000000000000000000000003613c65577f000000000000000000000000000000000000000000000000000000000000000090565b6040516080517f00000000000000000000000000000000000000000000000000000000000000005f527f00000000000000000000000000000000000000000000000000000000000000006020527f0000000000000000000000000000000000000000000000000000000000000000604052466060523060805260a05f20916040525f60605260805290565b63fed398fc5f526004601cfd5b7401000000000000000000000000000000000000000060243560c4351760a43560843517171060186101243510166102643560061b61026001610244351461024061022435146020600435141616161561218257565b90815f52600160205260405f2091613d6e3615158483612e7d565b5060ff83541615613d7c5750565b61068a90613d95602463ffffffff610244351601613078565b90608435612ec8565b91905f9260a43591823314159060046001821191101616613dbd575050565b9092506102043560051b90613e5d82608001926301e4d72a8452602060a08201528260c08201523360e082015260843561010082015260606101446101a08301376101e06101408061012084015282015260a06102643502956102a08701610160830152868201935f6103608601526102c08801610180840152806103a06103808701965f8852015263fb5014fc606052609c6103048901930191614390565b5f60605261032482940160801b179052565b15613e7657565b6391b3e5145f526004601cfd5b90602082015103613e915750565b61068a9061245b565b9060649492939160208251145f14613f505760c0906001906040845260208401527f4ce34aa2000000000000000000000000000000000000000000000000000000006040840152602060448401526001878401525b02019260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48501527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4840152600483015260248201525f60448201520152565b5060c08582016001815101809152613eef565b9293919091833b1561405057604051946080519260a0519460c051967ff242432a000000000000000000000000000000000000000000000000000000005f528160045282602452836044528460645260a06084525f60a4525f8060c48180855af115613fe057505050505060805260a05260c0526040525f606052565b883d614004575b5063f486bc875f5260205260405260605260805260a05260a4601cfd5b601f3d0160051c9060051c908060030291808211614037575b505060205a91011061402f5785613fe7565b3d5f803e3d5ffd5b8080600392028380020360091c9203020101868061401d565b83635f15d6725f526020526024601cfd5b6369f958275f526020526024601cfd5b929190833b1561405057604051937f23b872dd000000000000000000000000000000000000000000000000000000005f528160045282602452836044525f8060648180855af1156140c957505050506040525f606052565b843d6140ef575b5063f486bc875f52602052604052606052608052600160a05260a4601cfd5b601f3d0160051c9060051c90806003029180821161411a575b505060205a91011061402f57846140d0565b8080600392028380020360091c92030201018580614108565b9394909461414084613e6f565b61414a8183613e83565b80614264575050604051937f23b872dd000000000000000000000000000000000000000000000000000000005f5280600452816024528260445260205f60648180885af1803d15601f3d1160015f51141617163d15158116156141b7575b5050505050506040525f606052565b80863b1515166141a857908691156141da5785635f15d6725f526020526024601cfd5b908591156141fc575063988919235f526020526040526060526080526084601cfd5b3d614220575b5063f486bc875f526020526040526060525f60805260a05260a4601cfd5b601f3d0160051c9060051c90806003029180821161424b575b505060205a91011061402f5784614202565b8080600392028380020360091c92030201018580614239565b9061068a9592939491613e9a565b60205f61010473ffffffffffffffffffffffffffffffffffffffff9460405195807f00000000000000000000000000000000000000000000000000000000000000001674ff00000000000000000000000000000000000000001784528585527f00000000000000000000000000000000000000000000000000000000000000006040526055600b20169560405282805282865af15f519015612568577fffffffff000000000000000000000000000000000000000000000000000000007f4ce34aa200000000000000000000000000000000000000000000000000000000911603612563575050565b61436482613e6f565b5f80808085855af115614375575050565b61437d614f3d565b63bc806b965f526020526040526044601cfd5b91602091935f91827fffffffff00000000000000000000000000000000000000000000000000000000825116958180525af1905f511490156143dd57156143d45750565b6080526024607cfd5b506143d4614f3d565b818102929181159184041417156123ac57565b919091828114614425578281830961441857614414916143e6565b0490565b63c63cf0895f526004601cfd5b50905090565b9392909384810361443d575050505090565b61445383614459930393420391828503906143e6565b946143e6565b83018093116123ac5781830304019015150290565b6312d3f5a35f526004601cfd5b9193929382519460808601519060058210156106c35760208701936144c473ffffffffffffffffffffffffffffffffffffffff9384875116331415906004600182119110161690565b6144d5575050505050505050600190565b6107bd976145c9836145d293601c956145b5608060409c0151958a8d519d8e6301e4d72a815260208082015201528c6060339101528c608082519101528c61012060a083015191015260a08d61014091829160c08501518382015260e085015161016082015201528d6040830151986145876145576101809b8c850190615b45565b80850160c085015261457260608701518d8387010190615bb9565b019184830160e08501528b8385010190615ba0565b01906101009282018382015289828201019485926145a5848a615c03565b019a6101648c019b830101604052565b8960401b9060801b1717910152525161239f565b60051b9061239f565b9401925116615450565b60808101519060058210156106c35773ffffffffffffffffffffffffffffffffffffffff60206001920151163314159111161790565b63d5da9a1b5f526004601cfd5b92919261462a612cfb565b938251156146545761068a9273ffffffffffffffffffffffffffffffffffffffff869216926155d1565b63375c24c15f525f6020526024601cfd5b92919092614671612cfb565b93805115614796575f92915f925f928091815160059060051b83015b8085106146be575050505050505080916060855101526146aa5750565b600103613919576391b3e5145f526004601cfd5b6020809501948551518751811015614739578190841b88010151908087510151916060928284835101519201511582518210151761478a575f918391871b0101519283019a8c8c518091019d8e9115911060011b17179b9a528c518d8a1560011461473e5750505060a090208718614739575b97969761468d565b6154c1565b83929a5090869160a0945182528b8401518c8301526040918285015183820152608080860151910152338c820152015220968401858118614780575b50614731565b855190525f61477a565b50505050979697614731565b63375c24c15f5260016020526024601cfd5b939190938051926147b884611bb0565b956147c1611201565b90600196600182510160051b6020928360205b8381106149a357505050505f5b878110614871575050506147f49061245b565b4780614861575b5061480d575b505050506107bd612715565b5f5b83811061481c5750614801565b8061483161482b8793896116ac565b51151590565b61483c575b0161480f565b61485c61484982856116ac565b518561485584826116ac565b5191613a36565b614836565b61486b903361435b565b5f6147fb565b61487b81876116ac565b518961489b61341d868401516effffffffffffffffffffffffffffff1690565b1561498f5791906148b56148af838e6116ac565b60019052565b5160408101518051905f5b82811061491f57505050606080910151908151915f5b8381106148e857505050505b016147e1565b9091929394506148f881836116ac565b5183810190815180614918575060a0015190528c949392919085016148d6565b83886156f4565b61492e818394959697936116ac565b5160806060820191825161494d575b0151905201908c949392916148c0565b608081018051908b90526149868d6149798b5173ffffffffffffffffffffffffffffffffffffffff1690565b6101208c0151908561516a565b8282015261493d565b9190505f61499d828d6116ac565b526148e2565b8083015180516060810151806149bf575b5050500184906147d4565b909193504710815115166126b857876149ff918460406149f68b8098015173ffffffffffffffffffffffffffffffffffffffff1690565b9101519161516a565b5f80806149b4565b909291925f80528451947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805190876041035f9060018111958615614b84575b5050851485151516978815614a7d575b505050505050505015614a6857565b614a70614f3d565b634f7fb80d5f526004601cfd5b909192939495809798508452604082527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc8401938451957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082019760205f60648b519c7f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8c528d520189845afa9a8b614b28575b50505050505252525f80808080808080614a59565b5f5103614b355780614b13565b3b614a7057614b775760600190604164010100000083515f1a1a15911416614b645763815e1d645f526004601cfd5b631f003d0a5f52515f1a6020526024601cfd5b638baa579f5f526004601cfd5b909150604085019081519260608701515f1a90614bbb575b8652835260205f60808560015afa50838352898552525f515f80614a49565b50601b8360ff1c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168352614b9c565b9192614bf7612cfb565b9380511583511517614d1057614c0b612cfb565b92614c178483876154ce565b8351926060840194855115614d055750614c53614c4b608086015173ffffffffffffffffffffffffffffffffffffffff1690565b8884896155d1565b865193604081015160408601511890602081015160208701511890518651181717614cf55750606084519301928351105f14614cc257509160206060614caf614cbc94614ca0839761169a565b519451905185519103976116ac565b51510151910151906116ac565b51015290565b60609150614cd5614cec9195939561169a565b5160206040614caf885188519003968451906116ac565b51015251905290565b63bced929d5f526020526024601cfd5b965050505050505090565b6398e9db6e5f526004601cfd5b428082111590831116939280614d36575b61219c575050565b508315614d2e565b635a052b325f526004601cfd5b63a11b63ff5f526004601cfd5b63133c37c65f526020526024601cfd5b614d71826106b9565b52565b90614d7e916116ac565b51805191614d8b836106b9565b6003831115614e29576040820180519093908015614dec57927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe614de692614ddf6060968787015190608088015191615af3565b0190614d68565b01519052565b50608082015151614e24576060927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe614de692614ddf565b615ae6565b6394eb6af65f526004601cfd5b815192915f5b848110614e4a575050505050565b614e5481836116ac565b518051614e60816106b9565b60036040809301511515600488141517911116614e805750600101614e3c565b8363a8930e9a5f52602052526044601cfd5b959192939490948587145f14614eaf575050506107bd93506143f9565b92919484614ec56107bd98614ecb9497866143f9565b936143f9565b9061442b565b9190608490614f38604051916398919765835260a0601c84019633602086015260806040860152614f246060614f0e604084015185890190615b45565b9283608001828901520151838388010190615b45565b018094608082016080820152010190615ba0565b010190565b3d614f4457565b601f3d0160051c60405160051c908060030291808211614f6d575b505060205a91011061402f57565b8080600392028380020360091c92030201015f80614f5f565b63939792855f526020526024601cfd5b92909260405193815190602092602060c087028801016040528587526020918660010160051b93848901928160010160051b019781810382821002820160010160051b9111975b81851061501a5750505b838310614ff5575050505050565b60a0859183858b01526080908181863e60608501518286015201920192019190614fe7565b9390949197869084838c0152608090818b873e60608087015190818489015288015111615047878961510a565b171799019360a08091019501910194909493929194614fdd565b9290604051938051908185119482808203911002820191602092602060e0820289010160405280885260209060010160051b928389019260010160051b01915b8382106150b057505050505050565b9091929380959782848b015260a090818a853e606083818c018487013e8481015190870151608080870151908901518015911417159111176150f2858861510a565b1717980195949360c0908101939190910191016150a1565b9081519160408101518015600385111661513a575b60208091604085015114948451149301519101511416161590565b5060408201517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9093019261511f565b9290918351615178816106b9565b615181816106b9565b615216575050506151c56151ac602083015173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff60408301519116176124435780606061520d608061068a94015173ffffffffffffffffffffffffffffffffffffffff1690565b9101519061435b565b90919260018151615226816106b9565b61522f816106b9565b036152a65760408101516124435761068a93615262602083015173ffffffffffffffffffffffffffffffffffffffff1690565b9073ffffffffffffffffffffffffffffffffffffffff606061529b608086015173ffffffffffffffffffffffffffffffffffffffff1690565b940151931691614133565b92600284516152b4816106b9565b6152bd816106b9565b0361532a57836152e7602061068a96015173ffffffffffffffffffffffffffffffffffffffff1690565b608082015173ffffffffffffffffffffffffffffffffffffffff169273ffffffffffffffffffffffffffffffffffffffff606060408501519401519416916122a2565b8361534f602061068a96015173ffffffffffffffffffffffffffffffffffffffff1690565b608082015173ffffffffffffffffffffffffffffffffffffffff169273ffffffffffffffffffffffffffffffffffffffff606060408501519401519416916121af565b9493919260c060a494615402614f38946040519663f4dd92ce8852601c88019a1860a088015260a060208801526153ec60606153d56040840151878b0190615b45565b928360a00160408b0152015185838a010190615bb9565b019160a083016060880152838388010190615ba0565b01809460a082016080820152010190615c03565b916125818360801c9263ffffffff601c818760401c16956317b1f942815201951690615c03565b631cf99b265f526020526040526044601cfd5b925f906020929593827fffffffff00000000000000000000000000000000000000000000000000000000825116968180525af1915f511491156154a95750156154995750600190565b63fb5014fc5f526020526024601cfd5b9050919091156154bc5750615499614f3d565b5f9150565b637fda72795f526004601cfd5b909291925f905f925f9180805160059060051b82015b8084106155005750505050505060608293945101526146aa5750565b6020979697809401938451518651811015614739578190841b8701015190808651015191606092828483510151920151158251821015176155c5575f918391871b010151928301998a519b8c81019c15908d1060011b17179a99528b518c89156001146155795750505060a090208618614739576154e4565b829950905f8493819360a0965184528186015182850152604093848701518582015260808088015191015201528d0152209583018481186155bb575b506154e4565b845190525f6155b5565b505050509695966154e4565b81519294935f93849384929091825b8160051b840181106156015750505050505060608293945101526146aa5750565b6020909796970190855182515110156147395781516020815160051b880101516020815192015160206040840151920151158251821015176156e9579060209160051b0101515f60608201998a519081158d8381011060011b17179b0199528b51871560011461569557506060902086189060408c0151610120820151189060208d01519051181717614739575b906155e0565b9160609397506040826101209351855260208101516020860152015160408401528560808401528c60208251910152015160408c01522093602084018281186156df575b5061568f565b825190525f6156d9565b50505096959661568f565b63a5f542085f526020526040526060526064601cfd5b600981106159a2576011811061585e57601581106157c057601781106157755760177f403be09941a31d05cfc2f896505811353d45d38743288b016630cce39435476a9114027f1d51df90cba8de7637ca3e8fe1e3511d1dc2f23487d05dbdecb781860c21ac1c1890565b60157fbb40bf8cea3a5a716e2b6eb08bbdac8ec159f82f380783db3c56904f15a43d049114027f3bd8cff538aba49a9c374c806d277181e9651624b3e31111bc0624574f8bca1d1890565b601381106158135760137f54b3212a178782f104e0d514b41a9a5c4ca9c980bf6597c3cecbf280917e202a9114027f5a4f867d3d458dabecad65f6201ceeaba0096df2d0c491cc32e6ea4e643500171890565b60117f2d7a3ed6dab270fdb8e054b2ad525f0ce2a8b89cc76c17f0965434740f673a559114027fc3939feff011e53ab8c35ca3370aad54c5df1fc2938cd62543174fa6e7d858771890565b600d811061590457600f81106158b957600f7fcc4886e37eedd9aacd6c1c2c9247197a621a71282e87a7cbc673f3736d9aa1419114027f1da3eed3ecef6ebaa6e5023c057ec2c75150693fd0dac5c90f4a142f9879fde81890565b600d7f8df51df98847160517f5b1186b4bc3f418d98b8a7f17f1292f392d79d600d79e9114027f6b5b04cbae4fcb1a9d78e7b2dfc51a36933d023cf6e347e03d517b472a8525901890565b600b811061595757600b7f32f4e7485d6485f9f6c255929b9905c62ba919758bbe231f231eaeecf33d810c9114027fbb98d87cc12922b83759626c5f07d72266da9702d19ffad6a514c73a89002f5f1890565b60097f6f0ec38c21f6f583ab7f3c5413c773ffd5344c34fde1d390958e438bf667448f9114027fd1d97d1ef5eaa37a4ee5fbf234e6f6d64eb511eb562221cd7edfbdde0848da051890565b60058110615a4857600781106159fd5760077fb58d772fb09b426b9dece637f61ca9065f2b994f1464b51e9207f55f7c8f59489114027f7ff98d9d4e55d876c5cfac10b43c04039522f3ddfb0ea9bfe70c68cfb5c7cc141890565b60057f25d02425402d882d211a7ab774c0ed6eca048c4d03d9af40132475744753b2a39114027f1c19f71958cdd8f081b4c31f7caf5c010b29d12950be2fa1c95070dc47e30b551890565b60038110615a9b5760037ff3e8417a785f980bdaf134fa0274a6bf891eeb8195cd94b09d2aa651046e28bc9114027fa02eb7ff164c884e5e2c336dc85f81c6a93329d8e9adf214b32729b894de2af11890565b60017f832c58a5b611aadcfa6a082ac9d04bace53d8278387f10040347b7e98eb5b3029114027fbf8e29b89f29ed9b529c154a63038ffca562f8d7cd1e2545dda53a1b582dde301890565b6309bde3395f526004601cfd5b9190915f5260209060205f20916020820191602081519160059260051b0101905b818410615b26575050505003615ae657565b8351808611821b9586529483189490945260405f209392820192615b14565b9081519081815260209283808083019301918460051b0101915b84838210615b72575050505060071b0190565b8160809251805185528281015183860152604080820151908601526060809101519085015201910190615b5f565b8051603f0163ffffffe016929161068a91849190615c23565b80519182815260208080808501948660051b01019201925b828110615be5575050505060a00260200190565b60a090818581835160045afa153d151761018d578201930192615bd1565b615c1f602092839283815180845260051b948593019101615c23565b0190565b829060045afa153d151761018d57565b604051906101608201604052615c71610140918281853763ffffffff615c608160408401351683016127d1565b604086015260608201351601612825565b806060840152519082015290565b90915f925f9260603d10915f905f925f905f938615615cdc575b8615615cab575b505050505050929190565b615cc4939495995060209850615cce9650880190614f96565b9590960190615061565b9092175f8080808080615ca0565b509450925060405f803e5f51926020948551943d878201113d8888011117968715615d08575b50615c99565b9450809650849192505f3e5f51908385813e835193808560a0028701013d10908360071b8801013d101761ffff8584171117955f80525f615d02565b815192915f5b848110615d58575050505050565b615d6281836116ac565b518051615d6e816106b9565b60036040809301511515600488141517911116615d8e5750600101615d4a565b8363d69293325f52602052526044601cfdfea164736f6c6343000818000a00000000000000000000000000000000f9490004c11cef243f5400493c00ad630000000000000000000000000000000000
  1. Validate deployments were successful by checking that Seaport is returned:
cast call --rpc-url ${RPC_URL} 0x0000000000000068F116a894984e2DB1123eB395 'name()(string)'

Verifying Seaport and ConduitController

After Seaport and ConduitController are deployed, they are verified as follows:

  1. Ensure that EXPLORER_API_KEY and NETWORK_RPC are set in .env appropriately.
  2. For verifying the ConduitController, navigate to the 1.1 release tag on the Seaport repo and build artifacts:
git clone https://github.com/ProjectOpenSea/seaport && cd seaport
git checkout 821a049
yarn install && yarn build
  1. Verify ConduitController by calling:
npx hardhat verify --network verificationNetwork "0x00000000F9490004C11Cef243f5400493c00Ad63"
  1. Navigate to the 1.6 release tag on the seaport-core repo:
cd ../ && git clone https://github.com/ProjectOpenSea/seaport-core && cd seaport-core
git checkout 523097f
  1. Open foundry.toml and modify the runs setting to work around a limitation on the max optimization run value on many block explorers (the build artifacts are equivalent):
optimizer_runs = 4_294_967_295 => optimizer_runs = 9_999_999
  1. Build artifacts:
forge build
  1. Verify Seaport 1.6 by calling:
forge verify-contract --chain {chain} 0x0000000000000068F116a894984e2DB1123eB395 src/Seaport.sol:Seaport