0 txs
0 calls
constructor
No constructor.
functions
predictAddress
viewfunction predictAddress(address poolManager, bytes32 salt, address owner) view returns (address predicted)
deploy
nonpayablefunction deploy(address poolManager, bytes32 salt, address owner) returns (address hook)
events
No events.
errors
No errors.
creation bytecode
0x60808060405234601557614f8d908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816395c3385614610196575063ef34f29114610032575f80fd5b3461019257602073ffffffffffffffffffffffffffffffffffffffff6101366100bb61005d36610258565b929186949194614c4c916100e76040519661007a848601896102ca565b8488528388019461030c8639604051968791858301948590929173ffffffffffffffffffffffffffffffffffffffff60209181604085019616845216910152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866102ca565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826102ca565b51902060405190848201927fff0000000000000000000000000000000000000000000000000000000000000084523060601b602184015260358301526055820152605581526101866075826102ca565b51902016604051908152f35b5f80fd5b34610192576101a436610258565b92919092614c4c908184019284841067ffffffffffffffff85111761022b5784936101f59361030c863973ffffffffffffffffffffffffffffffffffffffff91821681529116602082015260400190565b03905ff580156102205760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126101925760043573ffffffffffffffffffffffffffffffffffffffff8116810361019257906024359060443573ffffffffffffffffffffffffffffffffffffffff811681036101925790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761022b5760405256fe60a06040523461032c57604051601f614c4c38819003918201601f19168301916001600160401b0383118484101761033057808492604094855283398101031261032c5780516001600160a01b0381169182820361032c57602001516001600160a01b0381169182820361032c576080525f6101a061007c610344565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06100da610344565b600181528260208201528260408201528260608201528260808201528260a0820152600160c0820152600160e0820152826101008201528261012082015282610140820152826101608201528261018082015201526120003016151560011480159061031f575b8015610312575b8015610305575b80156102f8575b80156102eb575b80156102db575b80156102cb575b80156102bf575b80156102b3575b80156102a7575b801561029b575b801561028f575b8015610283575b61027057811561025d575f80546001600160a01b03198116841782556101ff93916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36101ef81610364565b506101f9816103da565b5061046d565b50600e80546001600160a01b0319169190911790556040516146cb908161050182396080518181816103fc015281816104c401528181611177015281816113e8015281816115e00152818161226401528181612591015261356c0152f35b631e4fbdf760e01b5f525f60045260245ffd5b630732d7b560e51b5f523060045260245ffd5b50600130161515610195565b5060023016151561018e565b50600430161515610187565b50600830161515610180565b50601030161515610179565b50602030161515610172565b506040301615156001141561016b565b5060803016151560011415610164565b506101003016151561015d565b5061020030161515610156565b506104003016151561014f565b5061080030161515610148565b5061100030161515610141565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b0381118382101761033057604052565b6001600160a01b0381165f9081525f80516020614bec833981519152602052604090205460ff166103d5576001600160a01b03165f8181525f80516020614bec83398151915260205260408120805460ff191660011790553391905f80516020614bcc8339815191528180a4600190565b505f90565b6001600160a01b0381165f9081525f80516020614c2c833981519152602052604090205460ff166103d5576001600160a01b03165f8181525f80516020614c2c83398151915260205260408120805460ff191660011790553391907fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775905f80516020614bcc8339815191529080a4600190565b6001600160a01b0381165f9081525f80516020614c0c833981519152602052604090205460ff166103d5576001600160a01b03165f8181525f80516020614c0c83398151915260205260408120805460ff191660011790553391907ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b0731941905f80516020614bcc8339815191529080a460019056fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a7146137c8575080630d8d7c391461361557806321d0ee701461354f578063248a9ca3146135e2578063259982e51461354f578063291698ac146135295780632f2ff15d146134eb578063334410a214612c7957806336568abe14612c1c5780634de0d32b14612b09578063508a81dd1461271c578063575e24b4146124f45780635e35359e1461231f57806362d0609a146122af5780636c2bbe7e146115bd5780636fe7e6eb146121ff578063715018a61461218e57806375b238fc1461215357806379502c551461207d5780637dc0d1d0146120565780638da5cb5b1461203057806391d1485414611fe557806391dd734614611b405780639a0bf14a14611b195780639b44937e146116525780639e252f081461162b5780639f063efc146115bd578063a217fddf146115a1578063ae7f653a14611527578063b47b2fb11461134b578063b6a8b0fa146103da578063c4e833ce146111e3578063d547741f1461119b578063dc4c90d314611157578063dc98354e1461046c578063e1b4af69146103da578063f0a56fc81461039f578063f2fde38b146102e95763f564b477146101cb575f80fd5b346102e657600319360160c081126102e25760a0136102e65760a43562ffffff811681036102e2577fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582526001602052604082206001600160a01b0333165f5260205260ff60405f205416156102925760a061024636613a50565b208252600f60205260408220907fffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff6dffffff000000000000000000000083549260581b16911617905580f35b6044827fe2517d3f000000000000000000000000000000000000000000000000000000008152336004527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775602452fd5b5080fd5b80fd5b50346102e65760206003193601126102e6576001600160a01b0361030b613893565b610313614236565b168015610373576001600160a01b038254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b50346102e657806003193601126102e65760206040517ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b07319418152f35b50346102e6576004906103ec36613ce4565b5050505050506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610447577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b7fae18210a000000000000000000000000000000000000000000000000000000008152fd5b50346102e65760e06003193601126102e657610486613893565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102e6576104b9613b7d565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361112f576040516104f6816139d5565b6024356001600160a01b038116810361112b5781526044356001600160a01b038116810361112b57602082015260643562ffffff8116810361112b5760408201526084358060020b810361112b57606082015260a4356001600160a01b038116810361112b579060a09160808201522090818152600f602052604081206101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff825416179055818152600f602052604081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556001600160a01b038316926401000276a38410158061110e575b156110b05777ffffffffffffffffffffffffffffffffffffffff000000009060201b16806fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c1196171717171717179060808210155f1461109e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818201828111610aa4571c5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80820191821360011661104457800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c678000000000000000169060401b1717171717171717171717171717693627a301d71055774c85810290808205693627a301d71055774c851490151715611071577ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc55681018181136001166110445760801d60020b906fdb2df09e81959a81455e260799a0632f810190836fdb2df09e81959a81455e260799a0632f831291129080158216911516176110445760801d60020b818103610951575092506040915b8152600f60205220907fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff82549160101b64ffffff000016911617905560206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b908282121561103d5761096382614345565b945b620d89e88611610fdf576001861615610fb65770ffffffffffffffffffffffffffffffffff6ffffcb933bd6fad37aa2d162d1a5940015b169560028116610f7b575b60048116610f40575b60088116610f05575b60108116610eca575b60208116610e8f575b60408116610e54575b60808116610e19575b6101008116610dde575b6102008116610da3575b6104008116610d68575b6108008116610d2d575b6110008116610cf2575b6120008116610cb7575b6140008116610c7c575b6180008116610c41575b620100008116610c06575b620200008116610bcd575b620400008116610b69575b6208000016610b36575b838313610ada575b63ffffffff8660201c9616155f14610ad15760ff845b168601809611610aa4576001600160a01b03604095961611155f14610a9d57505b926108eb565b9050610a97565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60ff6001610a76565b948015610b09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0494610a60565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b946b048a170391f7dc42444e8fa28102908082046b048a170391f7dc42444e8fa21490151715610aa45760801c94610a58565b956d2216e584f5fa1ea926041bedfe988102908082046d2216e584f5fa1ea926041bedfe981490151715610ba05760801c95610a4e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b956e5d6af8dedb81196699c329225ee6048102908082046e5d6af8dedb81196699c329225ee6041490151715610ba05760801c95610a43565b956f09aa508b5b7a84e1c677de54f3e99bc98102908082046f09aa508b5b7a84e1c677de54f3e99bc91490151715610ba05760801c95610a38565b956f31be135f97d08fd981231505542fcfa68102908082046f31be135f97d08fd981231505542fcfa61490151715610ba05760801c95610a2d565b956f70d869a156d2a1b890bb3df62baf32f78102908082046f70d869a156d2a1b890bb3df62baf32f71490151715610ba05760801c95610a23565b956fa9f746462d870fdf8a65dc1f90e061e58102908082046fa9f746462d870fdf8a65dc1f90e061e51490151715610ba05760801c95610a19565b956fd097f3bdfd2022b8845ad8f792aa58258102908082046fd097f3bdfd2022b8845ad8f792aa58251490151715610ba05760801c95610a0f565b956fe7159475a2c29b7443b29c7fa6e889d98102908082046fe7159475a2c29b7443b29c7fa6e889d91490151715610ba05760801c95610a05565b956ff3392b0822b70005940c7a398e4b70f38102908082046ff3392b0822b70005940c7a398e4b70f31490151715610ba05760801c956109fb565b956ff987a7253ac413176f2b074cf7815e548102908082046ff987a7253ac413176f2b074cf7815e541490151715610ba05760801c956109f1565b956ffcbe86c7900a88aedcffc83b479aa3a48102908082046ffcbe86c7900a88aedcffc83b479aa3a41490151715610ba05760801c956109e7565b956ffe5dee046a99a2a811c461f1969c30538102908082046ffe5dee046a99a2a811c461f1969c30531490151715610ba05760801c956109dd565b956fff2ea16466c96a3843ec78b326b528618102908082046fff2ea16466c96a3843ec78b326b528611490151715610ba05760801c956109d4565b956fff973b41fa98c081472e6896dfb254c08102908082046fff973b41fa98c081472e6896dfb254c01490151715610ba05760801c956109cb565b956fffcb9843d60f6159c9db58835c9266448102908082046fffcb9843d60f6159c9db58835c9266441490151715610ba05760801c956109c2565b956fffe5caca7e10e4e61c3624eaa0941cd08102908082046fffe5caca7e10e4e61c3624eaa0941cd01490151715610ba05760801c956109b9565b956ffff2e50f5f656932ef12357cf3c7fdcc8102908082046ffff2e50f5f656932ef12357cf3c7fdcc1490151715610ba05760801c956109b0565b956ffff97272373d413259a46990580e213a8102908082046ffff97272373d413259a46990580e213a1490151715610ba05760801c956109a7565b70ffffffffffffffffffffffffffffffffff70010000000000000000000000000000000061099c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f54000000000000000000000000000000000000000000000000000000000000006044820152fd5b8194610965565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b81607f03607f8111610aa4571b6106b2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f52000000000000000000000000000000000000000000000000000000000000006044820152fd5b5073fffd8963efd1fc6a506488495d951d5263988d2684106105e9565b8280fd5b807fae18210a0000000000000000000000000000000000000000000000000000000060049252fd5b50346102e657806003193601126102e65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102e65760406003193601126102e6576111df6004356111bb61387d565b906111da6111d5825f526001602052600160405f20015490565b61412f565b614275565b5080f35b50346102e657806003193601126102e6576020816101c0926101a060405161120a8161398b565b82815282858201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015282610160820152826101808201520152806040516112688161398b565b6001815283810182815260408201838152606083018481526080840185815260a0850186815260c08601906001825260e0870192600184526101008801948986526101208901968a88526101408a01988b8a526101a06101608c019b8d8d5261018081019d8e52019c8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b50346102e6576101606003193601126102e657611366613893565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102e65760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126102e6576101443567ffffffffffffffff81116102e2576113dc9036906004016138bd565b50506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361112f576001600160a01b03600c5416604051907f51af492000000000000000000000000000000000000000000000000000000000825261144d60048301613d5a565b6101243560a4830152601060c4830152600260e48301526101048201526040816101248173c03cb8bd91ccbefff60f1f6a2de3f18cfa1013f95af4801561151c57829183916114cc575b604083837fffffffff00000000000000000000000000000000000000000000000000000000835192168252600f0b6020820152f35b9150506040813d604011611514575b816114e8604093836139f1565b810103126102e25760206114fb82614318565b9101519081600f0b820361112b5760409250905f611497565b3d91506114db565b6040513d84823e3d90fd5b50346102e657600319360160c081126102e25760a0136102e65760a4358015158091036102e2576115566140a7565b60a061156136613a50565b208252600f60205260408220907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff0083549260081b16911617905580f35b50346102e657806003193601126102e657602090604051908152f35b50346102e6576004906115cf36613ad7565b505050505050506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610447577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b50346102e657806003193601126102e65760206001600160a01b03600c5416604051908152f35b50346102e65760806003193601126102e65760243560043567ffffffffffffffff821161112b5781600401916101606003198236030112611b095760443567ffffffffffffffff8111611b15576116ad9036906004016138bd565b91906064359267ffffffffffffffff8411611b1157836004019260606003198636030112611b0d576116dd6140a7565b876001600160a01b03600d54169261173e61172b6040519a7f9b44937e000000000000000000000000000000000000000000000000000000008c528a60048d0152608060248d015280613de0565b61016060848d01526101e48c0191613e30565b906024840135976003891015611b095760a48b01899052604485013560c48c01526040978b97889687956119cc956119bf93611811936001600160a01b03906117f990610144908c60e485611795606485016138a9565b169101528c61010460848301359101528c61012460a48301359101528c8260c48301359101528c61016460e48301359101528c610184856117d961010485016138a9565b169101528c6101a4856117ef61012485016138a9565b16910152016138a9565b166101c48a01526003198984030160448a0152613e30565b91600319868403016064870152604461182a8280613e84565b94606085526001600160a01b036119a761014061197f6119416119036118c68c8c61189661186e61185b8480613de0565b61016060608601526101c0850191613e30565b928a61187c602083016138a9565b166080840152604081013560a08401526060810190613eb6565b9160c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa082860301910152613f09565b6118d360808e018e613eb6565b8d83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160e08f015290613f09565b61191060a08d018d613eb6565b8c83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0016101008e01529061401b565b61194e60c08c018c613eb6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08c8403016101208d015261401b565b9860e0810135828a01526101008101356101608a01526101208101356101808a0152016138a9565b166101a0860152602481013560208601520190613de0565b918a818503910152613e30565b03925af1908115611afe5784938592611aa5575b507f261bf5276691f2ca3f4f5b0804aa42bcb54195a7f08c63d234843763b1f797f39190600203611a59576040805160608082526006908201527f72656465656d00000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a081015b0390a380f35b6040805160608082526004908201527f6d696e74000000000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a08101611a53565b600294507f261bf5276691f2ca3f4f5b0804aa42bcb54195a7f08c63d234843763b1f797f39250611aed9060403d604011611af7575b611ae581836139f1565b810190613e6e565b94909492506119e0565b503d611adb565b6040513d86823e3d90fd5b8380fd5b8780fd5b8680fd5b8480fd5b50346102e657806003193601126102e65760206001600160a01b03600d5416604051908152f35b50346102e65760206003193601126102e65760043567ffffffffffffffff81116102e257611b729036906004016138bd565b90916001600160a01b03600e541691823303611f875783908101039161014083126102e257604051906060820182811067ffffffffffffffff821117611f5a57604052611bbe856138a9565b825260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085011261112b5760405193611bf7856139d5565b611c03602087016138a9565b8552611c11604087016138a9565b6020860152606086013562ffffff81168103611f56576080917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40916040880152611c5c838901613a42565b6060880152611c6d60a089016138a9565b8388015260208501968752011261112b57604051906080820182811067ffffffffffffffff821117611f2957604052611ca860c08701613a42565b8252611cb660e08701613a42565b9560208301968752604083016101008201358152610120606085019201358252836040860152865191604051916020830183811067ffffffffffffffff821117611efc57611d82938993604098979693611db5938a5285835289519d8e998a9889977f5a6bcfda00000000000000000000000000000000000000000000000000000000895260048901906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b5160020b60a48701525160020b60c48601525160e485015251610104840152610140610124840152610144830190613ca1565b03925af192831561151c578293611ec6575b611e6794506001600160a01b0380600e54169251169051918460801d600f0b9385600f0b948181125f14611e9c57611e01611e1391614345565b84846001600160a01b03885116614430565b80851215611e6b57506001600160a01b036020611e32611e3b96614345565b94015116614430565b60405190602082015260208152611e536040826139f1565b604051918291602083526020830190613ca1565b0390f35b84939413611e7d575b50505050611e3b565b6001600160a01b036020611e939501511661439e565b5f808080611e74565b818113611eaa575b50611e13565b611ec09084846001600160a01b0388511661439e565b5f611ea4565b92506040843d604011611ef4575b81611ee1604093836139f1565b810103126102e257611e67935192611dc7565b3d9150611ed4565b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b5f80fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f6e6c79206d616e616765722063616e2063616c6c00000000000000000000006044820152fd5b50346102e65760406003193601126102e6576001600160a01b03604061200961387d565b92600435815260016020522091165f52602052602060ff60405f2054166040519015158152f35b50346102e657806003193601126102e6576001600160a01b036020915416604051908152f35b50346102e657806003193601126102e65760206001600160a01b03600b5416604051908152f35b50346102e657806003193601126102e6576001600160a01b03600254166001600160a01b0360035416906001600160a01b03600454166001600160a01b036005541690604051916120d8836120d181613be4565b03846139f1565b6001600160a01b0360075416926121396001600160a01b0360085416916001600160a01b0360095416936001600160a01b03600a541695604051998a998a5260208a0152604089015260608801526101206080880152610120870190613ca1565b9360a086015260c085015260e08401526101008301520390f35b50346102e657806003193601126102e65760206040517fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758152f35b50346102e657806003193601126102e6576121a7614236565b806001600160a01b0381547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102e6576101006003193601126102e65761221a613893565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102e657600490612250613b7d565b50612259613a32565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610447577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b50346102e65760206003193601126102e657604060c0916004358152600f602052205462ffffff6040519160ff81161515835260ff8160081c16151560208401528060101c60020b60408401528060281c60020b60608401528060401c60020b608084015260581c1660a0820152f35b50346102e65760606003193601126102e657612339613893565b61234161387d565b906001600160a01b0360443592612356614236565b16916040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481875afa9081156124e95785916124b7575b508111612459576040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208083019182526001600160a01b039490941660248301526044808301939093529181528491906123f96064826139f1565b519082855af11561244c5781513d6124435750803b155b612418575080f35b7f5274afe7000000000000000000000000000000000000000000000000000000008252600452602490fd5b60011415612410565b50604051903d90823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152fd5b90506020813d6020116124e1575b816124d2602093836139f1565b81010312611f5657515f61239b565b3d91506124c5565b6040513d87823e3d90fd5b50346102e6576101406003193601126102e65761250f613893565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102e65760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126102e6576101243567ffffffffffffffff81116102e2576125859036906004016138bd565b50506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361112f576001600160a01b03600e5416906001600160a01b03600b5416604051927fe060fbdb000000000000000000000000000000000000000000000000000000008452600484015261260860248401613d5a565b60c43580151580910361112b5760c484015260e43560e48401526001600160a01b03612632613866565b16610104840152600f610124840152601061014484015260026101648401526101848301526060826101a48173c03cb8bd91ccbefff60f1f6a2de3f18cfa1013f95af491821561244c5781809181946126c4575b60608462ffffff87867fffffffff00000000000000000000000000000000000000000000000000000000604051941684526020840152166040820152f35b92509250506060813d606011612714575b816126e2606093836139f1565b810103126102e2576126f381614318565b604060208301519201519262ffffff841684036102e6575090806060612686565b3d91506126d5565b50346102e65760406003193601126102e65760243560043567ffffffffffffffff821161112b57816004018236036060600319820112611b155761275e6140a7565b6001600160a01b03600d541693604051947f575be6cc000000000000000000000000000000000000000000000000000000008652600260048701526024860152836044860152608060648601526040858061298e6127bc8780613e84565b606060848401526001600160a01b036129406101406129166128d861289a61285c6128008a60e46101606127f08c80613de0565b92909301526102448d0191613e30565b8761280d60208b016138a9565b166101048c01528c8901356101248c015261282b60608a018a613eb6565b8c83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c016101448e015290613f09565b6128696080890189613eb6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c8c8403016101648d0152613f09565b6128a760a0880188613eb6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c8b8403016101848c015261401b565b6128e560c0870187613eb6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c8a8403016101a48b015261401b565b9360e08101356101c48801526101008101356101e4880152610120810135610204880152016138a9565b16610224840152602486013560a484015261295e6044870189613de0565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c8584030160c4860152613e30565b03817336d9867338e248d5c0ce2de7509a4af94fbb3d295af4928315612afe5786958794612ab7575b5035917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9d01821215612ab3570160a48101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd3683900301811215612ab357016004018035919067ffffffffffffffff8311612ab35760208360051b3603910113611b155760017f53062b1c1dd477b1a6f9d3a132f37e6bbdb2d2f25cd2a848777ef81077dc823992115f14611a59576040805160608082526006908201527f72656465656d00000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a08101611a53565b8580fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9d9650612af491945060403d604011611af757611ae581836139f1565b95909593906129b7565b6040513d88823e3d90fd5b5034611f565760c0600319360112611f5657612b2436613a50565b60a435906001600160a01b038216809203611f5657612b416140a7565b73d7d8d531bef76b4f6435fbcbe8aaf137111dfb2990813b15611f5657610124612bd9915f9360405195869485937fba92869a00000000000000000000000000000000000000000000000000000000855260048501906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b600f60a4840152600260c48401523060e48401526101048301525af48015612c1157612c03575080f35b612c0f91505f906139f1565b005b6040513d5f823e3d90fd5b34611f56576040600319360112611f5657612c3561387d565b336001600160a01b03821603612c5157612c0f90600435614275565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b34611f56576020600319360112611f565760043567ffffffffffffffff8111611f5657806004019080360391610120600319840112611f5657612cba614236565b6001600160a01b03612ccb82613dcc565b161515806134ce575b806134b1575b80613494575b1561343657604051602081019360208552612cfa836138a9565b6001600160a01b031660408301526024840190612d16826138a9565b6001600160a01b031660608401526044850194612d32866138a9565b6001600160a01b0316608085015260648101612d4d816138a9565b6001600160a01b031660a086015260848201612d698188613de0565b60c088016101209052610160880190612d8192613e30565b9660a4840195612d90876138a9565b6001600160a01b031660e089015260c485019a612dac8c6138a9565b6001600160a01b03166101008a015260e4860198612dc98a6138a9565b6001600160a01b03166101208201528061010488019b612de88d6138a9565b6001600160a01b0316610140830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018252612e2790826139f1565b51902093604051946020860160208152600254966001600160a01b03881660408201526003546001600160a01b031660608201526004546001600160a01b031660808201526005546001600160a01b031660a082015260c081016101209052806101608101612e9590613be4565b6007546001600160a01b031660e08301526008546001600160a01b03166101008301526009546001600160a01b0316610120830152600a546001600160a01b0316610140830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018252612f0c90826139f1565b519020146133d8576001600160a01b03612f7d612fe0937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd977fffffffffffffffffffffffff000000000000000000000000000000000000000084612f718199613dcc565b16911617600255613dcc565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600354161760035582612fb18c613dcc565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006004541617600455613dcc565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006005541617600555359201821215611f56570160048101359067ffffffffffffffff8211611f56578136036024820113611f5657613041600654613b93565b601f8111613337575b505f90601f831160011461324f576001600160a01b039794886131868197826130bb6131e499896132139e9d9a849a6131b59a5f92613241575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617600655613dcc565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006007541617600755826130ef85613dcc565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060095416176009558261312388613dcc565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a558261315782613dcc565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006008541617600855613dcc565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600d541617600d55613dcc565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55613dcc565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600c541617600c55613dcc565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600e541617600e555f80f35b016024013590505f80613084565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f925f5b81811061331c57506131866001600160a01b039a8b6130bb6131e49960018a6132139f9e9b9a6131b59a869f9a879d889b106132e0575b505050811b01600655613dcc565b6024910101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600384901b60f8161c191690555f80806132d2565b6024848401013585556001909401936020928301920161329b565b60065f52601f830160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190602084106133b0575b601f0160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01905b8181106133a5575061304a565b5f8155600101613398565b7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915061336e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f636f6e666967206e6f74206368616e67650000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f636f6e66696720686173207a65726f20616464726573730000000000000000006044820152fd5b506001600160a01b036134a960648401613dcc565b161515612ce0565b506001600160a01b036134c660448401613dcc565b161515612cda565b506001600160a01b036134e360248401613dcc565b161515612cd4565b34611f56576040600319360112611f5657612c0f60043561350a61387d565b906135246111d5825f526001602052600160405f20015490565b614189565b34611f56575f600319360112611f565760206001600160a01b03600e5416604051908152f35b34611f565761355d366138eb565b50505050506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036135ba577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b34611f56576020600319360112611f5657602061360d6004355f526001602052600160405f20015490565b604051908152f35b34611f5657610120600319360112611f565761362f6140a7565b6001600160a01b03600e5416604051907f115a170500000000000000000000000000000000000000000000000000000000825260048201526004356001600160a01b038116809103611f565760248201526024356001600160a01b038116809103611f5657604482015260443562ffffff8116809103611f565760648201526064358060020b809103611f565760848201526084356001600160a01b038116809103611f565760a482015260a43560c48201526001600160a01b036136f2613b7d565b1660e482015260e43562ffffff8116809103611f56576101048201526001600160a01b0361371e613866565b16610124820152600f610144820152306101648201526020816101848173d7d8d531bef76b4f6435fbcbe8aaf137111dfb295af48015612c11575f9061377c575b6020906fffffffffffffffffffffffffffffffff60405191168152f35b506020813d6020116137c0575b81613796602093836139f1565b81010312611f5657516fffffffffffffffffffffffffffffffff81168103611f565760209061375f565b3d9150613789565b34611f56576020600319360112611f5657600435907fffffffff000000000000000000000000000000000000000000000000000000008216809203611f5657817f7965db0b000000000000000000000000000000000000000000000000000000006020931490811561383c575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483613835565b61010435906001600160a01b0382168203611f5657565b602435906001600160a01b0382168203611f5657565b600435906001600160a01b0382168203611f5657565b35906001600160a01b0382168203611f5657565b9181601f84011215611f565782359167ffffffffffffffff8311611f565760208381860195010111611f5657565b90610160600319830112611f56576004356001600160a01b0381168103611f56579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc820112611f565760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c830112611f565760c491610144359067ffffffffffffffff8211611f5657613987916004016138bd565b9091565b6101c0810190811067ffffffffffffffff8211176139a857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176139a857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176139a857604052565b60e435908160020b8203611f5657565b35908160020b8203611f5657565b60031960a0910112611f565760405190613a69826139d5565b816004356001600160a01b0381168103611f565781526024356001600160a01b0381168103611f5657602082015260443562ffffff81168103611f565760408201526064358060020b8103611f56576060820152608435906001600160a01b0382168203611f565760800152565b906101a0600319830112611f56576004356001600160a01b0381168103611f56579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc820112611f565760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c830112611f565760c49161014435916101643591610184359067ffffffffffffffff8211611f5657613987916004016138bd565b60c435906001600160a01b0382168203611f5657565b90600182811c92168015613bda575b6020831014613bad57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691613ba2565b6006545f9291613bf382613b93565b8082529160018116908115613c675750600114613c0e575050565b60065f9081529293509091907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b838310613c4d575060209250010190565b600181602092949394548385870101520191019190613c3c565b60209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b610120600319820112611f56576004356001600160a01b0381168103611f56579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc830112611f565760249160c4359160e43591610104359067ffffffffffffffff8211611f5657613987916004016138bd565b6024356001600160a01b038116809103611f565781526044356001600160a01b038116809103611f5657602082015260643562ffffff8116809103611f565760408201526084358060020b809103611f5657606082015260a435906001600160a01b038216809203611f565760800152565b356001600160a01b0381168103611f565790565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811215611f5657016020813591019167ffffffffffffffff8211611f56578136038313611f5657565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b9190826040910312611f56576020825192015190565b90357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea182360301811215611f56570190565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811215611f5657016020813591019167ffffffffffffffff8211611f56578160051b36038313611f5657565b906020838281520160208260051b85010193835f915b848310613f2f5750505050505090565b9091929394957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301855286357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6184360301811215611f56578301613fe3613fc8613fad613f9f8480613de0565b60a0875260a0870191613e30565b613fba6020850185613de0565b908683036020880152613e30565b613fd56040840184613de0565b908583036040870152613e30565b60608201359060ff82168203611f565760019360808060209560ff879616606085015201359101529801950193019190949394613f1f565b90602083828152019260208260051b82010193835f925b8484106140425750505050505090565b909192939495602080614088837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030188526140828b88613de0565b90613e30565b9801940194019294939190614032565b90816020910312611f56575190565b335f9081527f7ea4fe4b1bd1a95e05a1660ceb7679ada20cb5ab55b68fe91cbb5774952dbf89602052604090205460ff16156140df57565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194160245260445ffd5b805f52600160205260405f206001600160a01b0333165f5260205260ff60405f2054161561415a5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f205416155f1461423057805f52600160205260405f206001600160a01b0383165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b6001600160a01b035f5416330361424957565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f2054165f1461423057805f52600160205260405f206001600160a01b0383165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b51907fffffffff0000000000000000000000000000000000000000000000000000000082168203611f5657565b7f80000000000000000000000000000000000000000000000000000000000000008114614371575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9192906001600160a01b0316803b15611f56575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015612c115761440c5750565b5f614416916139f1565b565b90816020910312611f5657518015158103611f565790565b9091906001600160a01b0316806144b65750506001600160a01b03600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015612c115761448b5750565b6144ac9060203d6020116144af575b6144a481836139f1565b810190614098565b50565b503d61449a565b9092916001600160a01b031691823b15611f5657604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf18015612c1157614679575b506001600160a01b0316843082146145f8576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156145ed579160209184936145c0575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156145b4575061448b5750565b604051903d90823e3d90fd5b6145df90833d85116145e6575b6145d781836139f1565b810190614418565b505f614575565b503d6145cd565b6040513d85823e3d90fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481019390935291926020928492506044918391905af180156145ed5791602091849361465c575b50614577565b61467290833d85116145e6576145d781836139f1565b505f614656565b6146869195505f906139f1565b5f936001600160a01b0361450e56fea26469706673582212203ace772dbd58aa4aa4be6676ad9b2c662948cf85dc6242638461c8d4fbb0708964736f6c634300081a00332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0da6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb497ea4fe4b1bd1a95e05a1660ceb7679ada20cb5ab55b68fe91cbb5774952dbf8950efbde2d46c37e9785f1791697f77e94bb7b701e19f1930a668820722d37694a2646970667358221220c454198500ad6495c7ed0158d62d200ea151d4ff21a40d952829b89a4ccb76b764736f6c634300081a0033