0 txs
0 calls
constructor
constructor(address poolManager, address owner)
functions
implementation
viewfunction implementation() view returns (address)
predictHookAddress
viewfunction predictHookAddress(bytes32 salt) view returns (address)
deployHook
nonpayablefunction deployHook(address poolManager, address owner, bytes32 salt) returns (address hookAddress)
events
No events.
errors
No errors.
creation bytecode
0x60a03460d657601f614f4438819003918201601f19168301916001600160401b0383118484101760c257808492604094855283398101031260d65780516001600160a01b0381160360d657602001516001600160a01b0381160360d65760405161469f8082016001600160401b0381118382101760c25782916108a5833903905ff0801560b7576001600160a01b03166080526040516107ca90816100db823960805181818160e201528181610251015261038b0152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80635c60da1b1461009d57806384b128fa1461003f5763c0ec1af31461003a575f80fd5b610129565b346100995760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009957602061007b600435610351565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b5f80fd5b34610099575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100995773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b73ffffffffffffffffffffffffffffffffffffffff81160361009957565b346100995760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610099576004356101648161010b565b73ffffffffffffffffffffffffffffffffffffffff610221602435926101898461010b565b6101f56044359461019986610351565b506040519485937f485cc955000000000000000000000000000000000000000000000000000000006020860152166024840190929173ffffffffffffffffffffffffffffffffffffffff60209181604085019616845216910152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826102c1565b6101f56102936101f56102796102a89461023d6020870161032f565b958087526104ed60208801396040519283917f000000000000000000000000000000000000000000000000000000000000000060208401610486565b60405192839161028d60208401809761033f565b9061033f565b51905ff5803b156100995760405173ffffffffffffffffffffffffffffffffffffffff919091168152602090f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761030257604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061033d60405192836102c1565b565b805191908290602001825e015f815290565b610466610483916101f561044a6102a861036d6020820161032f565b908082526104ed60208301396101f56103da604051610279816101f57f00000000000000000000000000000000000000000000000000000000000000006020830173ffffffffffffffffffffffffffffffffffffffff606092168152604060208201525f60408201520190565b51902060405192839160208301953087917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b51902073ffffffffffffffffffffffffffffffffffffffff1690565b6120c01873ffffffffffffffffffffffffffffffffffffffff1690565b90565b90601f602060609473ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0941685526040828601528051918291826040880152018686015e5f858286010152011601019056fe60806040526102a88038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051608d908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040525f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156053573d5ff35b3d5ffdfea26469706673582212202033287041e2d380482427b39233506c9113b1220efc7d8c6268312d4864f6dd64736f6c634300081a0033a26469706673582212207f72a108b633a190234bb472a475692c088d7cf0232683f888a3af1d44a1a19664736f6c634300081a003360a080604052346100e857306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b6040516145b290816100ed82396080518181816111c301526119690152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610054565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714612df257508063248a9ca314612da05780632f2ff15d14612d43578063334410a21461258257806336568abe14612525578063485cc955146122bf5780634cbf1c7914611fcc5780634de0d32b14611c0a5780634f1ef286146118ed578063508a81dd1461123b57806352d1902d146111a95780635e35359e1461103e57806362d0609a14610fcf578063715018a614610f2057806375b238fc14610ee657806379502c5514610e115780637dc0d1d014610deb5780638da5cb5b14610da657806391d1485414610d3d57806391dd73461461092f5780639a0bf14a146109095780639b44937e146105f75780639e252f08146105d1578063a217fddf146105b7578063ad3cb1cc14610554578063ae7f653a146104da578063c4e833ce14610372578063d547741f14610310578063dc4c90d3146102eb578063f0a56fc8146102b1578063f2fde38b146102865763f564b4771461017c575f80fd5b3461028257600319360160c081126102825760a0136102825760a43562ffffff8116810361028257335f9081527fb16e88c42fd4e48df2dd6a2eabd6bc9aec654ec170056b470819f8892cc6431c602052604090205460ff16156102325760a06101e536612fbd565b205f52600d60205260405f20907fffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff6dffffff000000000000000000000083549260581b1691161790555f80f35b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560245260445ffd5b5f80fd5b34610282576020600319360112610282576102af6102a2612ea6565b6102aa613d4d565b6138d7565b005b34610282575f6003193601126102825760206040517ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b07319418152f35b34610282575f6003193601126102825760206001600160a01b035f5416604051908152f35b34610282576040600319360112610282576102af60043561032f612e90565b9061036d610368825f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052600160405f20015490565b613a32565b613dac565b34610282575f600319360112610282575f6101a060405161039281612f51565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c060206040516103f581612f51565b60018152818101905f8252604081015f8152606082015f8152608083015f815260a084015f815260c085016001815260e0860190600182526101008701925f84526101208801945f86526101408901965f88526101608a01985f8a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b3461028257600319360160c081126102825760a0136102825760a435801515809103610282576105086139aa565b60a061051336612fbd565b205f52600d60205260405f20907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff0083549260081b1691161790555f80f35b34610282575f600319360112610282576105b3604051610575604082612f6e565b600581527f352e302e30000000000000000000000000000000000000000000000000000000602082015260405191829160208352602083019061318c565b0390f35b34610282575f6003193601126102825760206040515f8152f35b34610282575f6003193601126102825760206001600160a01b03600b5416604051908152f35b346102825760806003193601126102825760243560043567ffffffffffffffff821161028257816004019161016060031982360301126102825760443567ffffffffffffffff8111610282576106519036906004016131cf565b91906064359267ffffffffffffffff841161028257606060031985360301126102825761067c6139aa565b6106e16106ce6001600160a01b03600c541697604051987ff8d9d0ec000000000000000000000000000000000000000000000000000000008a5260048a01528760248a015260a060448a015280613211565b61016060a48a0152610204890191613261565b916024840135946003861015610282576107a3889485946107b8946001600160a01b0361078b61014460409b8d60c48c0152604481013560e48c01528361072a60648301612ebc565b166101048c015260848101356101248c015260a4810135828c015260c48101356101648c015260e48101356101848c0152836107696101048301612ebc565b166101a48c01528361077e6101248301612ebc565b166101c48c015201612ebc565b166101e4880152600319878403016064880152613261565b906003198483030160848501526004016136cf565b0381736848e4b873e81c27d2bc613281af56ac0d2dee205af49081156108fe575f935f926108a5575b507f261bf5276691f2ca3f4f5b0804aa42bcb54195a7f08c63d234843763b1f797f39190600203610859576040805160608082526006908201527f72656465656d00000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a081015b0390a3005b6040805160608082526004908201527f6d696e74000000000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a08101610854565b600294507f261bf5276691f2ca3f4f5b0804aa42bcb54195a7f08c63d234843763b1f797f392506108ed9060403d6040116108f7575b6108e58183612f6e565b8101906134d9565b94909492506107e1565b503d6108db565b6040513d5f823e3d90fd5b34610282575f6003193601126102825760206001600160a01b03600c5416604051908152f35b346102825760206003193601126102825760043567ffffffffffffffff8111610282576109609036906004016131cf565b906001600160a01b035f541691823303610cdf578190810103916101408312610282576040519261099084612f35565b61099983612ebc565b845260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011261028257604051906109d282612ed0565b6109de60208501612ebc565b82526109ec60408501612ebc565b6020830152606084013562ffffff81168103610282576080917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40916040850152610a37838701612faf565b6060850152610a4860a08701612ebc565b83850152602087019384520112610282576040610b6093610120825191610a6e83612f19565b610a7a60c08201612faf565b8352610a8860e08201612faf565b602084015261010081013584840152013560608201528082870152825193610b325f602096610b748651610abc8a82612f6e565b83815287519a8b97889687957f5a6bcfda00000000000000000000000000000000000000000000000000000000875260048701906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a48701526020820151900b60c4860152604081015160e486015260600151610104850152565b61014061012484015261014483019061318c565b03925af19283156108fe575f93610ca2575b506001600160a01b0382939451169051908460801d600f0b85600f0b905f81125f14610c6d57610bb8610bd591614133565b836001600160a01b038651166001600160a01b035f54169061429b565b5f811215610c3157610c0793610bf26001600160a01b0392614133565b930151166001600160a01b035f54169061429b565b6040519181830152808252610c1d604083612f6e565b6105b360405192828493845283019061318c565b915f8313610c43575b50505050610c07565b610c64936001600160a01b03910151166001600160a01b035f541690614223565b80838080610c3a565b5f8113610c7b575b50610bd5565b610c9c90836001600160a01b038651166001600160a01b035f541690614223565b86610c75565b9192506040823d604011610cd7575b81610cbe60409383612f6e565b8101031261028257905191906001600160a01b03610b86565b3d9150610cb1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f6e6c79206d616e616765722063616e2063616c6c00000000000000000000006044820152fd5b3461028257604060031936011261028257610d56612e90565b6004355f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526001600160a01b0360405f2091165f52602052602060ff60405f2054166040519015158152f35b34610282575f6003193601126102825760206001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b34610282575f6003193601126102825760206001600160a01b03600a5416604051908152f35b34610282575f600319360112610282576001600160a01b03600154166001600160a01b0360025416906001600160a01b03600354166001600160a01b03600454169060405191610e6b83610e64816130cf565b0384612f6e565b6001600160a01b036006541692610ecc6001600160a01b0360075416916001600160a01b0360085416936001600160a01b036009541695604051998a998a5260208a015260408901526060880152610120608088015261012087019061318c565b9360a086015260c085015260e08401526101008301520390f35b34610282575f6003193601126102825760206040517fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758152f35b34610282575f60031936011261028257610f38613d4d565b5f6001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610282576020600319360112610282576004355f52600d60205260c060405f205462ffffff6040519160ff81161515835260ff8160081c16151560208401528060101c60020b60408401528060281c60020b60608401528060401c60020b608084015260581c1660a0820152f35b3461028257606060031936011261028257611057612ea6565b61105f612e90565b6001600160a01b0360443591611073613d4d565b166040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481855afa9081156108fe575f91611177575b508211611119576040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b039390931660248401526044808401929092529082526102af9190611114606483612f6e565b6141b6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152fd5b90506020813d6020116111a1575b8161119260209383612f6e565b810103126102825751846110b7565b3d9150611185565b34610282575f600319360112610282576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112135760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102825760406003193601126102825760243560043567ffffffffffffffff82116102825760606003198360040193360301126102825761127b6139aa565b6001600160a01b0360015416604051907f73bacc5b000000000000000000000000000000000000000000000000000000008252826004830152602082602481845afa9182156108fe575f926118c8575b506020602491604051928380927f61ec30c40000000000000000000000000000000000000000000000000000000082528760048301525afa80156108fe576001600160a01b03915f91611899575b5016600161133461132a8680613385565b60a08101906133b8565b9050115f1461160c576305f5e10061137d60806113666113606113578980613385565b838101906133b8565b9061340c565b01356101006113758880613385565b013590613472565b0490604051907fe65e1c79000000000000000000000000000000000000000000000000000000008252846004830152602082602481845afa9182156108fe575f926115d7575b5060206113d260049385613472565b91604051938480927fcc0f17860000000000000000000000000000000000000000000000000000000082525afa9182156108fe575f926115a1575b5061141a611420926134cb565b90613485565b8103116115745761144e9060e06114378580613385565b0135906001600160a01b0380600c54169116613e8d565b6040816001600160a01b03600c5416611493835195869384937f5e47ebcc000000000000000000000000000000000000000000000000000000008552600485016138b2565b0381736848e4b873e81c27d2bc613281af56ac0d2dee205af480156108fe575f925f9161152a575b506040805160608082526006908201527f72656465656d00000000000000000000000000000000000000000000000000006080820152602081019490945283015230917f53062b1c1dd477b1a6f9d3a132f37e6bbdb2d2f25cd2a848777ef81077dc8239908060a08101610854565b61085493507f53062b1c1dd477b1a6f9d3a132f37e6bbdb2d2f25cd2a848777ef81077dc8239915061156a9060403d6040116108f7576108e58183612f6e565b93909391506114bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91506020823d6020116115cf575b816115bc60209383612f6e565b810103126102825790519061141a61140d565b3d91506115af565b91506020823d602011611604575b816115f260209383612f6e565b810103126102825790519060206113c3565b3d91506115e5565b90506305f5e10061164060806116326113606116288880613385565b60608101906133b8565b013560e06113758780613385565b0490604051907fe65e1c79000000000000000000000000000000000000000000000000000000008252836004830152602082602481845afa9182156108fe575f92611864575b50602061169560049385613472565b91604051938480927fcc0f17860000000000000000000000000000000000000000000000000000000082525afa9182156108fe575f9261182e575b5061141a6116dd926134cb565b810180911161157457611708906001600160a01b03600454166001600160a01b03600c541690613e8d565b6040816001600160a01b03600c541661174d835195869384937f5e47ebcc000000000000000000000000000000000000000000000000000000008552600485016138b2565b0381736848e4b873e81c27d2bc613281af56ac0d2dee205af480156108fe575f925f916117e4575b506040805160608082526004908201527f6d696e74000000000000000000000000000000000000000000000000000000006080820152602081019490945283015230917f53062b1c1dd477b1a6f9d3a132f37e6bbdb2d2f25cd2a848777ef81077dc8239908060a08101610854565b61085493507f53062b1c1dd477b1a6f9d3a132f37e6bbdb2d2f25cd2a848777ef81077dc823991506118249060403d6040116108f7576108e58183612f6e565b9390939150611775565b91506020823d60201161185c575b8161184960209383612f6e565b810103126102825790519061141a6116d0565b3d915061183c565b91506020823d602011611891575b8161187f60209383612f6e565b81010312610282579051906020611686565b3d9150611872565b6118bb915060203d6020116118c1575b6118b38183612f6e565b810190613366565b85611319565b503d6118a9565b60249192506118e5602091823d84116118c1576118b38183612f6e565b9291506112cb565b604060031936011261028257611901612ea6565b6024359067ffffffffffffffff821161028257366023830112156102825781600401359061192e82613044565b9161193c6040519384612f6e565b8083526020830193366024838301011161028257815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803014908115611bd5575b50611213576119a1613d4d565b6001600160a01b038116926040517f52d1902d000000000000000000000000000000000000000000000000000000008152602081600481885afa5f9181611ba1575b50611a1457847f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc869203611b765750823b15611b4b57807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115611b19575f80916102af945190845af43d15611b11573d91611af583613044565b92611b036040519485612f6e565b83523d5f602085013e6144f0565b6060916144f0565b50505034611b2357005b7fb398979f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7faa1d49a4000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9091506020813d602011611bcd575b81611bbd60209383612f6e565b81010312610282575190866119e3565b3d9150611bb0565b90506001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141584611994565b346102825760c060031936011261028257611c2436612fbd565b60a435906001600160a01b03821680920361028257611c416139aa565b60a08120906001600160a01b035f541660405160208101908482526006604082015260408152611c72606082612f6e565b51902060038101809111611574576020906024604051809481937f1e2eaeaf00000000000000000000000000000000000000000000000000000000835260048301525afa80156108fe575f90611f8a575b6fffffffffffffffffffffffffffffffff915016908115611f0657825f52600d602052611d3e60405f205460281c60020b845f52600d60205260405f205460401c60020b611d1385600f0b61331f565b9060405192611d2184612f19565b83526020830152600f0b60408201525f6060820152309083613f82565b6001600160a01b03602081845116930151168160801d5f81600f0b135f14611efe576fffffffffffffffffffffffffffffffff16915b5f81600f0b135f14611ef6576fffffffffffffffffffffffffffffffff16925b82611e8a575b5082611ddb575b50916060917fe3b43c74eda3ceb102b5671a13d2b222882fe5b0fc99567be0a26ba9e4083f899360405192835260208301526040820152a3005b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523060048201526024810184905293919290602090859060449082905f905af19283156108fe577fe3b43c74eda3ceb102b5671a13d2b222882fe5b0fc99567be0a26ba9e4083f8994606094611e5b575b5091935091611da1565b611e7c9060203d602011611e83575b611e748183612f6e565b81019061334e565b5087611e51565b503d611e6a565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523060048201526024810184905290602090829060449082905f905af180156108fe5715611d9a57611eef9060203d602011611e8357611e748183612f6e565b5086611d9a565b505f92611d94565b505f91611d74565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f206c697175696469747920617661696c61626c6520666f7220776974686460448201527f726177616c0000000000000000000000000000000000000000000000000000006064820152fd5b506020813d602011611fc4575b81611fa460209383612f6e565b81010312610282576fffffffffffffffffffffffffffffffff9051611cc3565b3d9150611f97565b346102825761012060031936011261028257611fe66139aa565b60a0611ff136612fbd565b205f52600d60205260405f206001600160a01b035f5416604051917fc7715bc600000000000000000000000000000000000000000000000000000000835261203b600484016132ad565b61204760a484016132ad565b60a43561014484015260c4356001600160a01b0381168091036102825761016484015260e43562ffffff811680910361028257610184840152610104356001600160a01b038116809103610282576101a48401526101c48301526101e482015260a081610204817382df50e3b8ac778da6e3fba31d27665f7d83598f5af49081156108fe575f9161222d575b50600435906001600160a01b038216918281036102825750602435906001600160a01b038216928383036102825760209361212b612138926fffffffffffffffffffffffffffffffff95506060850151903090613e8d565b6080830151903090613e8d565b828101805160020b6121836040840191825160020b86865116600f0b906040519261216284612f19565b83528883015260408201525f6060820152309061217e36612fbd565b613f82565b8060801d5f81600f0b125f146122255761219d869161331f565b16905b600f0b5f81121561221d576121b5869161331f565b16905b60a06121c336612fbd565b209286865116945160020b905160020b90604051958652888601526040850152606084015260808301527ff6ce0596cc52d2a0d79c7990af39900c6e552f542a8c4342ebabb6f63957f9d360a03393a35116604051908152f35b505f906121b8565b505f906121a0565b905060a0813d60a0116122b7575b8161224860a09383612f6e565b81010312610282576040519061225d82612ed0565b8051906fffffffffffffffffffffffffffffffff8216820361028257608091835261228a6020820161329f565b602084015261229b6040820161329f565b60408401526060810151606084015201516080820152816120d3565b3d915061223b565b34610282576040600319360112610282576122d8612ea6565b6122e0612e90565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549160ff8360401c16159267ffffffffffffffff81168015908161251d575b6001149081612513575b15908161250a575b506124e2576001600160a01b0392818560017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006123cb9516177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005561248d575b5061239b61415f565b6123a361415f565b6123ac816138d7565b6123b461415f565b6123bc61415f565b6123c581613aab565b50613b78565b50167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f556123fa57005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005585612392565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501585612332565b303b15915061232a565b859150612320565b346102825760406003193601126102825761253e612e90565b336001600160a01b0382160361255a576102af90600435613dac565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102825760206003193601126102825760043567ffffffffffffffff8111610282578060040190803603610120600319820112610282576125c2613d4d565b6001600160a01b036125d3846131fd565b16151580612d26575b80612d09575b80612cec575b15612c8e576040519060208201906020825261260385612ebc565b6001600160a01b03166040840152602484019361261f85612ebc565b6001600160a01b03166060850152604481019461263b86612ebc565b6001600160a01b03166080860152606482019661265788612ebc565b6001600160a01b031660a087015260848301906126748282613211565b60c08901610120905261016089019061268c92613261565b9760a485019961269b8b612ebc565b6001600160a01b031660e08a015260c48601976126b789612ebc565b6001600160a01b03166101008b015260e48701996126d48b612ebc565b6001600160a01b03166101208201528061010489019c6126f38e612ebc565b6001600160a01b0316610140830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810182526127329082612f6e565b5190206040516020810190602082526001546001600160a01b031660408201526002546001600160a01b031660608201526003546001600160a01b031660808201526004546001600160a01b031660a082015260c08101610120905280610160810161279d906130cf565b6006546001600160a01b031660e08301526007546001600160a01b03166101008301526008546001600160a01b03166101208301526009546001600160a01b0316610140830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810182526128149082612f6e565b51902014612c30576001600160a01b036128ba6128e9938261288b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd998261285c819a6131fd565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001556131fd565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002556131fd565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060035416176003556131fd565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006004541617600455359201821215610282570160048101359067ffffffffffffffff82116102825781360360248201136102825761294a60055461307e565b601f8111612bea575b505f90601f8311600114612b2457612a8a6001600160a01b039794886129bf819787612ab998612ae89c9b9885985f92612b16575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005556131fd565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006006541617600655826129f3826131fd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075582612a27856131fd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600854161760085582612a5b886131fd565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060095416176009556131fd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600c541617600c556131fd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a556131fd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b555f80f35b016024013590508e80612988565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160055f5260205f20925f5b818110612bcf5750946001600160a01b036129bf819a600188612ae89c9b98859b98612a8a98612ab99c889b10612b93575b505050811b016005556131fd565b6024910101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600384901b60f8161c191690558e8080612b85565b60248484010135855560019094019360209283019201612b53565b60055f5260205f20601f840160051c81019160208510612c26575b601f0160051c01905b818110612c1b5750612953565b5f8155600101612c0e565b9091508190612c05565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f636f6e666967206e6f74206368616e67650000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f636f6e66696720686173207a65726f20616464726573730000000000000000006044820152fd5b506001600160a01b03612d01606484016131fd565b1615156125e8565b506001600160a01b03612d1e604484016131fd565b1615156125e2565b506001600160a01b03612d3b602484016131fd565b1615156125dc565b34610282576040600319360112610282576102af600435612d62612e90565b90612d9b610368825f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052600160405f20015490565b613c62565b34610282576020600319360112610282576020612dea6004355f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052600160405f20015490565b604051908152f35b3461028257602060031936011261028257600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361028257817f7965db0b0000000000000000000000000000000000000000000000000000000060209314908115612e66575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483612e5f565b602435906001600160a01b038216820361028257565b600435906001600160a01b038216820361028257565b35906001600160a01b038216820361028257565b60a0810190811067ffffffffffffffff821117612eec57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff821117612eec57604052565b6060810190811067ffffffffffffffff821117612eec57604052565b6101c0810190811067ffffffffffffffff821117612eec57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612eec57604052565b35908160020b820361028257565b60031960a09101126102825760405190612fd682612ed0565b816004356001600160a01b03811681036102825781526024356001600160a01b038116810361028257602082015260443562ffffff811681036102825760408201526064358060020b8103610282576060820152608435906001600160a01b03821682036102825760800152565b67ffffffffffffffff8111612eec57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b90600182811c921680156130c5575b602083101461309857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161308d565b6005545f92916130de8261307e565b808252916001811690811561315257506001146130f9575050565b60055f9081529293509091907f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b838310613138575060209250010190565b600181602092949394548385870101520191019190613127565b60209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9181601f840112156102825782359167ffffffffffffffff8311610282576020838186019501011161028257565b356001600160a01b03811681036102825790565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561028257016020813591019167ffffffffffffffff821161028257813603831361028257565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b51908160020b820361028257565b6004356001600160a01b0381168091036102825781526024356001600160a01b03811680910361028257602082015260443562ffffff81168091036102825760408201526064358060020b809103610282576060820152608435906001600160a01b0382168092036102825760800152565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114611574575f0390565b90816020910312610282575180151581036102825790565b9081602091031261028257516001600160a01b03811681036102825790565b9035907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea181360301821215610282570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610282570180359067ffffffffffffffff821161028257602001918160051b3603831361028257565b9015613445578035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6181360301821215610282570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8181029291811591840414171561157457565b811561348f570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90816020910312610282575190565b604d811161157457600a0a90565b9190826040910312610282576020825192015190565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561028257016020813591019167ffffffffffffffff8211610282578160051b3603831361028257565b906020838281520160208260051b85010193835f915b8483106135685750505050505090565b9091929394957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301855286357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618436030181121561028257830161361c6136016135e66135d88480613211565b60a0875260a0870191613261565b6135f36020850185613211565b908683036020880152613261565b61360e6040840184613211565b908583036040870152613261565b60608201359060ff8216809203610282578360808060209586956060600199015201359101529801950193019190949394613558565b90602083828152019260208260051b82010193835f925b8484106136795750505050505090565b9091929394956020806136bf837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030188526136b98b88613211565b90613261565b9801940194019294939190613669565b8035917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18236030183121561028257606081526138af928201916138a1906001600160a01b0361388661014061385e6138206137e26137a58a8761375860206137518e6101c061373f8780613211565b91909261016060608201520191613261565b9301612ebc565b1660808c015260408c013560a08c015261377560608d018d6134ef565b8c83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160c08e015290613542565b6137b260808c018c6134ef565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08c84030160e08d0152613542565b6137ef60a08b018b6134ef565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b8403016101008c0152613652565b61382d60c08a018a6134ef565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8403016101208b0152613652565b9660e08101358288015261010081013561016088015261012081013561018088015201612ebc565b166101a0840152602081013560208401526040810190613211565b916040818503910152613261565b90565b6138af93926001600160a01b03606093168252602082015281604082015201906136cf565b6001600160a01b0316801561397e576001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b335f9081527ff606e684ad9d4695315d4c1d83180a79ca1e5fc34d503cff501b8f4b9410207c602052604090205460ff16156139e257565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194160245260445ffd5b805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f206001600160a01b0333165f5260205260ff60405f20541615613a7c5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16613b73576001600160a01b03165f8181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f90565b6001600160a01b0381165f9081527fb16e88c42fd4e48df2dd6a2eabd6bc9aec654ec170056b470819f8892cc6431c602052604090205460ff16613b73576001600160a01b03165f8181527fb16e88c42fd4e48df2dd6a2eabd6bc9aec654ec170056b470819f8892cc6431c6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790553391907fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f206001600160a01b0383165f5260205260ff60405f205416155f14613d4757805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f206001600160a01b0383165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b6001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303613d8057565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f206001600160a01b0383165f5260205260ff60405f2054165f14613d4757805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f206001600160a01b0383165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000060208083019182526001600160a01b0385166024840152604480840196909652948252929390925f90613ee5606486612f6e565b84519082855af15f513d82613f5d575b505015613f0157505050565b611114613f5b936001600160a01b03604051917f095ea7b30000000000000000000000000000000000000000000000000000000060208401521660248201525f604482015260448152613f55606482612f6e565b826141b6565b565b909150613f7a57506001600160a01b0381163b15155b5f80613ef5565b600114613f73565b614092905f93614044859460406001600160a01b03815194613fa386612f35565b169384815260208101958652019081526140136001600160a01b03875416946040519460208601525160408501906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b60e08501526020820151900b610100840152604081015161012084015260600151610140830152565b610140815261405561016082612f6e565b6040519485809481937f48c8949100000000000000000000000000000000000000000000000000000000835260206004840152602483019061318c565b03925af19081156108fe575f916140b9575b50602081805181010312610282576020015190565b90503d805f833e6140ca8183612f6e565b8101906020818303126102825780519067ffffffffffffffff8211610282570181601f820112156102825780519061410182613044565b9261410f6040519485612f6e565b8284526020838301011161028257815f9260208093018386015e830101525f6140a4565b7f80000000000000000000000000000000000000000000000000000000000000008114611574575f0390565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561418e57565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b905f602091828151910182855af1156108fe575f513d61421a57506001600160a01b0381163b155b6141e55750565b6001600160a01b03907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156141de565b9192906001600160a01b0316803b15610282575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156108fe576142915750565b5f613f5b91612f6e565b9091906001600160a01b0316806143215750506001600160a01b03600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af180156108fe576142f65750565b6143179060203d60201161431a575b61430f8183612f6e565b8101906134bc565b50565b503d614305565b9092916001600160a01b031691823b1561028257604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf180156108fe576144d4575b506001600160a01b031684308214614453576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156144485791602091849361442b575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561441f57506142f65750565b604051903d90823e3d90fd5b61444190833d8511611e8357611e748183612f6e565b505f6143e0565b6040513d85823e3d90fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481019390935291926020928492506044918391905af18015614448579160209184936144b7575b506143e2565b6144cd90833d8511611e8357611e748183612f6e565b505f6144b1565b6144e19195505f90612f6e565b5f936001600160a01b03614379565b9061452d575080511561450557805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580614573575b61453e575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561453656fea2646970667358221220bd067b5058ed7dba69ba13b5f7fedee2dc8a1c4bacb88dfbcd87edbdd5037fec64736f6c634300081a0033000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b00000000000000000000000054453df69da2180b6fe9b5b0979b61fe0a5751a9