0 txs
4.2k calls
constructor
No constructor.
functions
acceptCrocProxyRole
purefunction acceptCrocProxyRole(address, uint16 slot) pure returns (bool)
userCmd
payablefunction userCmd(bytes input) payable returns (int128 baseFlow, int128 quoteFlow)
events
CrocKnockoutCross
event CrocKnockoutCross(bytes32 indexed pool, int24 indexed tick, bool isBid, uint32 pivotTime, uint64 feeMileage, uint160 commitEntropy)
errors
No errors.
creation bytecode
0x608060405262010011805460ff60e01b1916600160e71b17905534801561002557600080fd5b50614c6b806100356000396000f3fe6080604052600436106100295760003560e01c8063ac54c0fc1461002e578063f96dc78814610063575b600080fd5b34801561003a57600080fd5b5061004e61004936600461481e565b610090565b60405190151581526020015b60405180910390f35b61007661007136600461485e565b61009f565b60408051600f93840b81529190920b60208201520161005a565b61ffff81166002145b92915050565b60008060008060008060008060008060008060008e8e8101906100c29190614913565b9a509a509a509a509a509a509a509a509a509a509a50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610127575060005473ffffffffffffffffffffffffffffffffffffffff165b6101398b8b8b8b8b8b8b8b8b8a61015d565b909d509b5061014b8a8a8f8f866104e1565b50505050505050505050509250929050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8d16016101a45761019b8b8b8b8b8b8b898c8c610513565b915091506104d2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff560ff8d16016101e15761019b8b8b8b8b8b60018c8a8d8d610555565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff460ff8d160161021e5761019b8b8b8b8b8b60008c8a8d8d610555565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8d16016102595761019b8b8b8b8b8b8b898c8c6105a5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb60ff8d16016102965761019b8b8b8b8b8b60018c8a8d8d6105d4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea60ff8d16016102d35761019b8b8b8b8b8b60008c8a8d8d6105d4565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff8d160161030c5761019b8b8b8b89878a8a61061b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe160ff8d16016103475761019b8b8b8b60018a888b8b61065a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060ff8d16016103825761019b8b8b8b60008a888b8b61065a565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff8d16016103bb5761019b8b8b8b89878a8a6106c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd760ff8d16016103f65761019b8b8b8b60018a888b8b6106f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd660ff8d16016104315761019b8b8b8b60008a888b8b6106f4565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff8d160161046b5761019b8b8b8b8b8b888b8b61074b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f496e76616c696420636f6d6d616e64000000000000000000000000000000000060448201526064015b60405180910390fd5b9a509a98505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff168061050a818089888a898961078c565b50505050505050565b60008060006105238c8c8c6107e1565b9050610533818d8d8c8c8c6108b8565b6105428989898489898c610a28565b9250925050995099975050505050505050565b60008060006105698d8d8d8a8e8e8e610b73565b905060008061057f8f8f8f8f8f888e8e8e610513565b9150915061058f82828b8d610bb1565b945094505050509a509a98505050505050505050565b60008060006105b58c8c8c6107e1565b90506105c5818d8d8c8c8c610c1f565b6105428989898489898c610cdf565b60008060006105e48d8d8d610e0e565b905060006105f182610e9b565b9050600061060889600084600001518f8f8f610f70565b905061058f8f8f8f8f8f868e8e8e6105a5565b600080600061062b8a8a8a6107e1565b905061063c818b8b6000808c6108b8565b610649878287878a610ff7565b925092505097509795505050505050565b600080600061066a8b8b8b610e0e565b9050600061067782610e9b565b9050600061068c89600184600001518d61110b565b90506000806106a08f8f8f868e8e8e61061b565b915091506106b082828d8f610bb1565b9650965050505050509850989650505050505050565b60008060006106d68a8a8a6107e1565b90506106e7818b8b6000808c610c1f565b610649878287878a61115b565b60008060006107048b8b8b610e0e565b9050600061071182610e9b565b9050600061072689600084600001518d61110b565b90506107378d8d8d848c8c8c6106c6565b945094505050509850989650505050505050565b600080600061075b8b8b8b6107e1565b905061076c818c8c8b8b6000610c1f565b61077a88888388888b611181565b92509250509850989650505050505050565b73ffffffffffffffffffffffffffffffffffffffff85166107bd576107b88787866001851615156112b6565b6107cf565b6107cf878786886001861615156112f2565b61050a878784866002861615156112f2565b60408051610140810182526000606082018181526080830182905260a0830182905260c0830182905260e08301829052610100830182905261012083018290528252602082018190529181019190915261084062010009858585611322565b905061084b81611451565b6108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f504900000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b9392505050565b604086015173ffffffffffffffffffffffffffffffffffffffff1615610a20576040868101516000805492517f2dd148f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015233602482015288841660448201528784166064820152600287810b608483015286900b60a48201526fffffffffffffffffffffffffffffffff851660c4820152909290911690632dd148f19060e4015b6020604051808303816000875af1158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b791906149e0565b90508061050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f5a0000000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b505050505050565b6000806000610a3c876020015187876114d2565b9050610a6f81610a6183600001516fffffffffffffffffffffffffffffffff166115bc565b8c8c8c8c602001518a61190f565b8851606001519194509250610a87908b908b9061198e565b60208088015160009081526201000f82526040908190208351928401516fffffffffffffffffffffffffffffffff9384167001000000000000000000000000000000009185168202178255918401516001909101805460608601516080870151939095167fffffffffffffffff0000000000000000000000000000000000000000000000009091161767ffffffffffffffff9485169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000093909116929092029190911790555b5097509795505050505050565b600080610b81898989610e0e565b90506000610b8e82610e9b565b9050610ba38760018360000151898989610f70565b9a9950505050505050505050565b6000806000610bd1856fffffffffffffffffffffffffffffffff16611a04565b9050838015610be5575086600f0b81600f0b135b15610bf257809650610c0e565b83158015610c05575085600f0b81600f0b135b15610c0e578095505b868692509250505b94509492505050565b604086015173ffffffffffffffffffffffffffffffffffffffff1615610a20576040868101516000805492517f2a179e9b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015233602482015288841660448201528784166064820152600287810b608483015286900b60a48201526fffffffffffffffffffffffffffffffff851660c4820152909290911690632a179e9b9060e401610974565b6000806000610cf3876020015187876114d2565b9050610d2681610d1883600001516fffffffffffffffffffffffffffffffff166115bc565b8c8c8c8c602001518a611a38565b60208981015160009081526201000f82526040908190208551928601516fffffffffffffffffffffffffffffffff9384167001000000000000000000000000000000009185168202178255918601516001909101805460608801516080890151939095167fffffffffffffffff0000000000000000000000000000000000000000000000009091161767ffffffffffffffff9485169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000093909116929092029190911790559093509150610b66565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610e4857600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8087166020830152851691810191909152606081018390526080016040516020818303038152906040528051906020012090509392505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525060008181526201000f6020908152604091829020825160a08101845281546fffffffffffffffffffffffffffffffff808216808452700100000000000000000000000000000000928390048216958401959095526001909301549283169482019490945292810467ffffffffffffffff90811660608501527801000000000000000000000000000000000000000000000000909104166080830152610f6b57600080fd5b919050565b6000806000610f8187878787611abd565b915091506000610fb1858484610f978e8e611b62565b6fffffffffffffffffffffffffffffffff16929190611c20565b905088610fd857610fd3816fffffffffffffffffffffffffffffffff16611c9a565b610ba3565b6ffffffffffffffffffffffffffffff800169998505050505050505050565b600080600061100b876020015187876114d2565b905061101d8189896020015187611d4b565b60208981015160009081526201000f82526040908190208551928601516fffffffffffffffffffffffffffffffff9384167001000000000000000000000000000000009185168202178255918601516001909101805460608801516080890151939095167fffffffffffffffff0000000000000000000000000000000000000000000000009091161767ffffffffffffffff9485169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000093909116929092029190911790559093509150509550959350505050565b600080611136838561111d8989611b62565b6fffffffffffffffffffffffffffffffff169190611d9d565b90508461114d57611148816001614a31565b61114f565b805b9150505b949350505050565b600080600061116f876020015187876114d2565b905061101d8189896020015187611df4565b6000806000611195876020015187876114d2565b90506111c7816111ba83600001516fffffffffffffffffffffffffffffffff166115bc565b8b8b8b6020015189611e46565b60208981015160009081526201000f82526040908190208551928601516fffffffffffffffffffffffffffffffff9384167001000000000000000000000000000000009185168202178255918601516001909101805460608801516080890151939095167fffffffffffffffff0000000000000000000000000000000000000000000000009091161767ffffffffffffffff9485169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009390911692909202919091179055909350915050965096945050505050565b60006112c0611eac565b905082600f0b6000146112e1576112dc85858560008587611f81565b6112eb565b6112eb8482611fc2565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff821661131257600080fd5b6000610a20868686868587611f81565b60408051610140810182526000606082018181526080830182905260a0830182905260c0830182905260e08301829052610100830182905261012083018290528252602082018190529181018290529061137d858585610e0e565b600081815260208881526040808320815160e081018352905460ff808216835261ffff6101008304811695840195909552630100000082048116938301939093526401000000008104909316606082015266010000000000008304821660808201526701000000000000008304821660a0820152680100000000000000009092041660c0820181905292935091611415908690611ffa565b60408051606081018252938452602084019490945273ffffffffffffffffffffffffffffffffffffffff16928201929092529695505050505050565b805151600090600160ff90911611156114c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f495053000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b50515160ff1660011490565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915261150684610e9b565b9050826fffffffffffffffffffffffffffffffff1681600001516fffffffffffffffffffffffffffffffff1610158015611556575080516fffffffffffffffffffffffffffffffff808416911611155b6108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f524300000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b6000620100026fffffffffffffffffffffffffffffffff83161080159061160457506f0ffff5433e2b3d8211706e6102aa94726fffffffffffffffffffffffffffffffff8316105b61160d57600080fd5b77ffffffffffffffffffffffffffffffff0000000000000000604083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106116b757607f810383901c91506116c1565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461190057886fffffffffffffffffffffffffffffffff166118dc8261201e565b6fffffffffffffffffffffffffffffffff1611156118fa5781611902565b80611902565b815b9998505050505050505050565b6000806000611940858a8a8a6119368b6fffffffffffffffffffffffffffffffff16612390565b8f60800151612466565b905061195084868a8a8a866124ae565b61195e85898989858961252d565b60008061196d8c898c8c612691565b9150915061197b82826126c5565b909d909c509a5050505050505050505050565b61199983838361270a565b6119ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f440000000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b505050565b60006f80000000000000000000000000000000826fffffffffffffffffffffffffffffffff1610611a3457600080fd5b5090565b6000806000611a69858a8a8a611a5f8b6fffffffffffffffffffffffffffffffff16612390565b8f6080015161273d565b90506000611a7b85878b8b8b87612797565b9050611a8b868a8a8a868a612852565b600080611a9b8d8a858e8e61290e565b91509150611aa9828261293d565b955095505050505097509795505050505050565b600080611acc8560020b61201e565b9150611ada8460020b61201e565b9050816fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1611611b17578215611b1257600080fd5b610c16565b806fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1610611b4c5782611b1257600080fd5b8215611b59575084610c16565b94959350505050565b600060048215611bb157806fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1610611ba657611ba18185614a5a565b611ba9565b60005b915050610099565b611bcc60046fffffffffffffffffffffffffffffffff614a5a565b6fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611611c0057611ba18185614a31565b6fffffffffffffffffffffffffffffffff915050610099565b5092915050565b600083611c4b57611c44856001611c3686612988565b611c3f86612988565b611c20565b9050611153565b6000826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611611c8057838303611c84565b8284035b9050611c9286600183611d9d565b915050611153565b60006ffffffffffffffffffffffffffffff8008083169003611d18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6f766572666c6f7700000000000000000000000000000000000000000000000060448201526064016104c9565b50600b90811c6e1fffffffffffffffffffffffffffff16600101901b7107fffffffffffffffffffffffffffffff8001690565b6000806000611d608486888a606001516129dd565b9050611d728582896060015187612aba565b600080611d7f8984612acb565b91509150611d8d82826126c5565b909a909950975050505050505050565b600082611de757611de26fffffffffffffffffffffffffffffffff8086169084160260401c5b77ffffffffffffffffffffffffffffffffffffffffffffffff16612b02565b611153565b611153611dc38584612b3b565b6000806000611e098486888a60600151612b84565b9050611e1b8582896060015187612c76565b600080611e288984612c8b565b91509150611e36828261293d565b9450945050505094509492505050565b6000806000611e5c858989898d60800151612cca565b90506000611e6d85878a8a86612cf8565b9050611e7e8689896000868a612852565b600080611e8b8c84612c8b565b91509150611e99828261293d565b9550955050505050965096945050505050565b600080547501000000000000000000000000000000000000000000900460ff1615611f33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f445300000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b611f3c34612e48565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055919050565b6000600f85900b1315611fa057611f9b8685858585612e67565b610a20565b6000600f85900b1215610a2057610a2085611fba86614a83565b858585612e9a565b6fffffffffffffffffffffffffffffffff811615611ff657611ff682826fffffffffffffffffffffffffffffffff16612ec2565b5050565b6000600182811681148061200f576000612015565b606085901c5b95945050505050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d892600283900b1280159061205b5750620cb14a600283900b13155b61206457600080fd5b6000808360020b12612079578260020b612081565b8260020b6000035b90506000816001166000036120a7577001000000000000000000000000000000006120b9565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156120ed576ffff97272373d413259a46990580e213a0260801c5b600482161561210c576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561212b576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561214a576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612169576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612188576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156121a7576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156121c7576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156121e7576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612207576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612227576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612247576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612267576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612287576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156122a7576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156122c8576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156122e8576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612307576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612324576b048a170391f7dc42444e8fa20260801c5b60008460020b131561236357807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161235f5761235f614ac1565b0490505b6801000000000000000081061561237b57600161237e565b60005b60ff16604082901c0192505050919050565b6000600a82901c6e3fffffffffffffffffffffffffffff8116906ffffffffffffffffffffffffffffffc00841690600116158080156123e05750846fffffffffffffffffffffffffffffffff1682145b80156123f757506bffffffffffffffffffffffff83105b61245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f464400000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b50909392505050565b600061247487878785612f8c565b61248087878685612f8c565b61248b878685613037565b6124968785856130a2565b6124a38787878786612cca565b979650505050505050565b60408051606088901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020808301919091526034820188905260e887811b605484015286901b60578301528251603a818403018152605a909201835281519181019190912060009081526201000d9091522061050a81848461312d565b60005473ffffffffffffffffffffffffffffffffffffffff828116911614610a2057600080546040517f0f382c0e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101899052600288810b604483015287900b60648201526fffffffffffffffffffffffffffffffff8616608482015267ffffffffffffffff851660a482015290831690630f382c0e9060c4015b6020604051808303816000875af1158015612604573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262891906149e0565b90508061050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4c5000000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b60008060008060006126a9896000015189898961326b565b9250925092506126ba89898361336f565b611e36838383613394565b6000806126e3846fffffffffffffffffffffffffffffffff16611a04565b6126fe846fffffffffffffffffffffffffffffffff16611a04565b915091505b9250929050565b600061ffff821661271b8186614af0565b60020b15801561201557506127308185614af0565b60020b1595945050505050565b60008061274b88878661340b565b9050600061275a8987876134c4565b90506127698989898988612cca565b9250811561277b5761277b8988613573565b801561278b5761278b8987613573565b50509695505050505050565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606089901b166020808301919091526034820188905260e887811b605484015286901b60578301528251808303603a018152605a909201835281519181019190912060009081526201000d909152908120805461283b907801000000000000000000000000000000000000000000000000900463ffffffff16886135e2565b6128468185856136a4565b98975050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff828116911614610a2057600080546040517f9534070300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101899052600288810b604483015287900b60648201526fffffffffffffffffffffffffffffffff8616608482015267ffffffffffffffff851660a48201529083169063953407039060c4016125e5565b60008061291d8787868661380b565b909250905061292f8282898989613859565b909890975095505050505050565b60008061295b846fffffffffffffffffffffffffffffffff16611a04565b61296490614a83565b61297f846fffffffffffffffffffffffffffffffff16611a04565b6126fe90614a83565b600080826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000816129bd576129bd614ac1565b0490506fffffffffffffffffffffffffffffffff81111561009957600080fd5b6000806129ea86866138ec565b9050612a086fffffffffffffffffffffffffffffffff851684613914565b8154909250612a29906fffffffffffffffffffffffffffffffff1683613962565b81547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff91909116178155612a6d613987565b815463ffffffff91909116700100000000000000000000000000000000027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff909116179055949350505050565b600080610a2086838388888861252d565b600080600080612adb86866139a1565b91509150612ae986866139f9565b612af582826001613394565b9350935050509250929050565b806fffffffffffffffffffffffffffffffff811677ffffffffffffffffffffffffffffffffffffffffffffffff821614610f6b57600080fd5b60006fffffffffffffffffffffffffffffffff821677ffffffffffffffffffffffffffffffff0000000000000000604085901b1681612b7c57612b7c614ac1565b049392505050565b600080612b9186866138ec565b9050612baf6fffffffffffffffffffffffffffffffff851684613914565b81549092506fffffffffffffffffffffffffffffffff90811690831610612c105780547fffffffffffffffffffffffff0000000000000000000000000000000000000000811682556fffffffffffffffffffffffffffffffff169150612c6d565b805482908290600090612c369084906fffffffffffffffffffffffffffffffff16614a5a565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b50949350505050565b612c8584600080868686612852565b50505050565b600080612c9884846139a1565b909250905061270384612cbc6fffffffffffffffffffffffffffffffff8616611a04565b612cc590614a83565b613a18565b600080612cd987868886613a57565b90506000612ce988868987613a57565b91909103979650505050505050565b60408051606087901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020808301919091526034820187905260e886811b605484015285901b60578301528251603a818403018152605a909201835281519181019190912060009081526201000d9091529081208054700100000000000000000000000000000000900467ffffffffffffffff908116908416811015612e3d576000612db067ffffffffffffffff861683613ad6565b8354909150612df4906fffffffffffffffffffffffffffffffff1667ffffffffffffffff83160260301c5b71ffffffffffffffffffffffffffffffffffff16613b14565b83547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8816021784559350505b505095945050505050565b806fffffffffffffffffffffffffffffffff81168114610f6b57600080fd5b8015612e8e576000612e7a868686613b47565b9050612e8886828686613c26565b506112eb565b6112eb85858585613c74565b8015612eb657612eab858585613ca5565b6112dc858484613d24565b6112eb85858585613d49565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612f1c576040519150601f19603f3d011682016040523d82523d6000602084013e612f21565b606091505b50509050806119ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f544600000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b6000612f988584613d8c565b80549091506bffffffffffffffffffffffff16158015612fd5575080546c0100000000000000000000000090046bffffffffffffffffffffffff16155b156112eb578360020b8360020b1261302d57805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff8416021781555b6112eb8584613ddf565b60006130438484613d8c565b80549091506bffffffffffffffffffffffff1660006130628285613e67565b83547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116179092555050505050565b60006130ae8484613d8c565b80549091506c0100000000000000000000000090046bffffffffffffffffffffffff1660006130dd8285613e67565b83546bffffffffffffffffffffffff9091166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff909116179092555050505050565b82546fffffffffffffffffffffffffffffffff166000811561316f57508354700100000000000000000000000000000000900467ffffffffffffffff16613173565b5060005b60006131916fffffffffffffffffffffffffffffffff841686613962565b905060006131ab67ffffffffffffffff8616878587613e88565b905060006131b7613987565b885463ffffffff9091167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff909416700100000000000000000000000000000000027fffffffffffffffff0000000000000000000000000000000000000000000000009092166fffffffffffffffffffffffffffffffff909516949094171791909116919091179095555050505050565b600080600080600061327d8787613f39565b91509150816fffffffffffffffffffffffffffffffff16896fffffffffffffffffffffffffffffffff1610156132d1576132ca6fffffffffffffffffffffffffffffffff89168383613fb0565b9350613363565b806fffffffffffffffffffffffffffffffff16896fffffffffffffffffffffffffffffffff1610613320576133196fffffffffffffffffffffffffffffffff89168383613ffb565b9450613363565b61333d6fffffffffffffffffffffffffffffffff89168a83613fb0565b935061335c6fffffffffffffffffffffffffffffffff8916838b613ffb565b9450600192505b50509450945094915050565b6119ff8361338e846fffffffffffffffffffffffffffffffff16611a04565b83614043565b6000806000856fffffffffffffffffffffffffffffffff1611806133b55750825b6133c05760006133cb565b6133cb600486614a31565b6000856fffffffffffffffffffffffffffffffff1611806133e95750835b6133f45760006133ff565b6133ff600486614a31565b91509150935093915050565b6000806134188585613d8c565b80549091506bffffffffffffffffffffffff1660006134378286614086565b83547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff8216908117855590915015801561349c575082546c0100000000000000000000000090046bffffffffffffffffffffffff16155b156134b7576134ab8787614092565b600193505050506108b1565b5060009695505050505050565b6000806134d18585613d8c565b80549091506c0100000000000000000000000090046bffffffffffffffffffffffff1660006135008286614086565b83547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000006bffffffffffffffffffffffff831690810291909117855590915015801561349c575082546bffffffffffffffffffffffff166134b7576134ab8787614092565b620100026000838360405160200161359892919091825260e81b602082015260230190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120835290820192909252016000908120555050565b600a6000836135ef613987565b6135f99190614b12565b905060006136078383614b2f565b905060ff63ffffffff8216116112eb5760008481526201000960205260409020546601000000000000900460ff1663ffffffff821610156112eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f4a0000000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b82546000906fffffffffffffffffffffffffffffffff16816136c6828661411b565b86549091506136f69067ffffffffffffffff86811691700100000000000000000000000000000000900416613ad6565b92506fffffffffffffffffffffffffffffffff8116156137db5785547c0100000000000000000000000000000000000000000000000000000000900460ff161561379c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4f5200000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b85547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8216178655613802565b85547fffffff00000000000000000000000000000000000000000000000000000000001686555b50509392505050565b6000806000613820876000015187878761326b565b9194509250905061384f876138466fffffffffffffffffffffffffffffffff8916611a04565b61338e90614a83565b5094509492505050565b60008067ffffffffffffffff8316156138e15760006138986fffffffffffffffffffffffffffffffff861667ffffffffffffffff86160260301c612ddb565b90506fffffffffffffffffffffffffffffffff8116156138df576000806138bf8884612c8b565b90925090506138ce828b614a31565b99506138da818a614a31565b985050505b505b509495939450505050565b60006201000e60006138fe8585614127565b8152602001908152602001600020905092915050565b6000660100000000000075ffffffffffffffffffffffffffffffff000000000000603085901b168267ffffffffffffffff85168301828161395757613957614ac1565b049695505050505050565b8082016fffffffffffffffffffffffffffffffff808416908216101561009957600080fd5b60004263ffffffff811115610f6b5763ffffffff91505090565b60008060006139b4848660600151614182565b85519091506139dc906fffffffffffffffffffffffffffffffff80841691160260401c611dc3565b92506139ef611dc3828760000151612b3b565b9150509250929050565b611ff682612cc5836fffffffffffffffffffffffffffffffff16611a04565b6020820151613a39906fffffffffffffffffffffffffffffffff16826141d7565b6fffffffffffffffffffffffffffffffff1660209092019190915250565b600080613a648686613d8c565b90508360020b8560020b1315613aa6578054611148907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1684614b52565b547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1695945050505050565b60006002613ae48184614b73565b67ffffffffffffffff168467ffffffffffffffff161115611ba65780613b0a8486614b52565b611ba99190614b52565b806fffffffffffffffffffffffffffffffff811671ffffffffffffffffffffffffffffffffffff821614610f6b57600080fd5b600080613b548584614244565b600081815262010010602052604090208054919250906fffffffffffffffffffffffffffffffff908116908616811115613be957815486908390600090613bae9084906fffffffffffffffffffffffffffffffff16614a5a565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550613c1c565b81547fffffffffffffffffffffffffffffffff00000000000000000000000000000000168255613c198187614a5a565b93505b5050509392505050565b6fffffffffffffffffffffffffffffffff831615613c4f57613c4a84848484613c74565b612c85565b73ffffffffffffffffffffffffffffffffffffffff8216612c8557612c858482611fc2565b73ffffffffffffffffffffffffffffffffffffffff8216613c9a57613c4a848483614279565b612c8584848461431f565b6000613cb18483614244565b6000818152620100106020526040812080549293508592909190613ce89084906fffffffffffffffffffffffffffffffff16614a31565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050565b73ffffffffffffffffffffffffffffffffffffffff82166119ff576119ff8382611fc2565b73ffffffffffffffffffffffffffffffffffffffff8216613d6f57613c4a84848361433d565b612c858285856fffffffffffffffffffffffffffffffff16614362565b60006201000260008484604051602001613db392919091825260e81b602082015260230190565b604051602081830303815290604052805190602001208152602001908152602001600020905092915050565b6000613ded8260020b6144cb565b60ff166001901b90506000613e048360020b6144e7565b60ff166001901b905081620100066000613e1e87876144f5565b81526020019081526020016000206000828254179250508190555080620100076000613e4a8787614540565b815260208101919091526040016000208054909117905550505050565b8082016bffffffffffffffffffffffff808416908216101561009957600080fd5b6000816fffffffffffffffffffffffffffffffff16600003613eab575083611153565b836fffffffffffffffffffffffffffffffff16600003613ecc575081611153565b8267ffffffffffffffff168567ffffffffffffffff1603613eee575083611153565b6000613f048686613eff8682614a31565b61456c565b90506000613f178585613eff818a614a31565b9050613f24816001614b73565b613f2f836001614b73565b6124a39190614b73565b6000808360020b8360020b13613f4e57600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d892600285900b1215613f7f57600080fd5b620cb14a600284900b1315613f9357600080fd5b613f9c8461201e565b9150613fa78361201e565b90509250929050565b6000826fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161115613ff057613fe98483856145b6565b90506108b1565b613fe98484846145b6565b600080826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff161161403157838303614035565b8284035b905061201585826001614635565b80156119ff57604083015161406a906fffffffffffffffffffffffffffffffff16836141d7565b6fffffffffffffffffffffffffffffffff166040840152505050565b60006108b18284614b94565b60006140a08260020b6144cb565b60ff166001901b19905060006140b88360020b6144e7565b60ff166001901b19905060006140ce8585614540565b600081815262010007602052604081208054851690819055919250819003610a205760006140fc87876144f5565b6000908152620100066020526040902080548616905550505050505050565b60006108b18284614a5a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054015b60405160208183030381529060405280519060200120905092915050565b600066010000000000006fffffffffffffffffffffffffffffffff80851667ffffffffffffffff851683010290603082901c90811115612015576fffffffffffffffffffffffffffffffff9350505050610099565b60008082600f0b121561420e57508082016fffffffffffffffffffffffffffffffff8084169082161061420957600080fd5b610099565b826fffffffffffffffffffffffffffffffff168284019150816fffffffffffffffffffffffffffffffff16101561009957600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8085166020830152831691810191909152600090606001614164565b816fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161015614307576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f454300000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b60006143138383614a5a565b9050612c858482611fc2565b6119ff818430856fffffffffffffffffffffffffffffffff16614688565b6119ff8361434b8385614a31565b6fffffffffffffffffffffffffffffffff16612ec2565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916143f99190614bb9565b6000604051808303816000865af19150503d8060008114614436576040519150601f19603f3d011682016040523d82523d6000602084013e61443b565b606091505b509150915081801561446557508051158061446557508080602001905181019061446591906149e0565b6112eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f544600000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b60006101006144dd8360020b60081d90565b6100999190614be8565b600061009961010083614af0565b600080600283900b60101d9050838160405160200161452192919091825260f81b602082015260210190565b6040516020818303038152906040528051906020012091505092915050565b600080600283900b60081d9050838160405160200161452192919091825260f01b602082015260220190565b6000816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff168567ffffffffffffffff1602816145ad576145ad614ac1565b04949350505050565b6000806145c38385614a5a565b905060006145d18685612b3b565b77ffffffffffffffffffffffffffffffffffffffffffffffff1690506000856fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16836146209190614c0a565b61462a9190614c21565b9050613c1981612e48565b600061115382614668576146498585612b3b565b77ffffffffffffffffffffffffffffffffffffffffffffffff16612e48565b6fffffffffffffffffffffffffffffffff8086169085160260401c614649565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916147279190614bb9565b6000604051808303816000865af19150503d8060008114614764576040519150601f19603f3d011682016040523d82523d6000602084013e614769565b606091505b509150915081801561479357508051158061479357508080602001905181019061479391906149e0565b610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f544600000000000000000000000000000000000000000000000000000000000060448201526064016104c9565b73ffffffffffffffffffffffffffffffffffffffff8116811461481b57600080fd5b50565b6000806040838503121561483157600080fd5b823561483c816147f9565b9150602083013561ffff8116811461485357600080fd5b809150509250929050565b6000806020838503121561487157600080fd5b823567ffffffffffffffff8082111561488957600080fd5b818501915085601f83011261489d57600080fd5b8135818111156148ac57600080fd5b8660208285010111156148be57600080fd5b60209290920196919550909350505050565b803560ff81168114610f6b57600080fd5b8035600281900b8114610f6b57600080fd5b80356fffffffffffffffffffffffffffffffff81168114610f6b57600080fd5b60008060008060008060008060008060006101608c8e03121561493557600080fd5b61493e8c6148d0565b9a5060208c013561494e816147f9565b995060408c013561495e816147f9565b985060608c0135975061497360808d016148e1565b965061498160a08d016148e1565b955061498f60c08d016148f3565b945061499d60e08d016148f3565b93506149ac6101008d016148f3565b92506149bb6101208d016148d0565b91506101408c01356149cc816147f9565b809150509295989b509295989b9093969950565b6000602082840312156149f257600080fd5b815180151581146108b157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6fffffffffffffffffffffffffffffffff818116838216019080821115611c1957611c19614a02565b6fffffffffffffffffffffffffffffffff828116828216039080821115611c1957611c19614a02565b600081600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008103614ab857614ab8614a02565b60000392915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008260020b80614b0357614b03614ac1565b808360020b0791505092915050565b63ffffffff828116828216039080821115611c1957611c19614a02565b600063ffffffff80841680614b4657614b46614ac1565b92169190910492915050565b67ffffffffffffffff828116828216039080821115611c1957611c19614a02565b67ffffffffffffffff818116838216019080821115611c1957611c19614a02565b6bffffffffffffffffffffffff828116828216039080821115611c1957611c19614a02565b6000825160005b81811015614bda5760208186018101518583015201614bc0565b506000920191825250919050565b60008260010b80614bfb57614bfb614ac1565b808360010b0791505092915050565b808202811582820484141761009957610099614a02565b600082614c3057614c30614ac1565b50049056fea264697066735822122050c93d0bed616bdbf445fbcf15c960908464adafa392c9166fa843f2d3276c5064736f6c63430008130033