From 65b308d124725fc5379dedfbe612864a5379565b Mon Sep 17 00:00:00 2001 From: mejango Date: Fri, 23 Feb 2024 03:05:47 -0300 Subject: [PATCH] permissionIds and adapt to new redeem hook spec --- .../Deploy.s.sol/11155111/run-latest.json | 30 +- .../Deploy.s.sol/11155420/run-latest.json | 24 +- package-lock.json | 669 +++++------------- package.json | 4 +- src/JBBuybackHook.sol | 4 +- test/Unit.t.sol | 29 +- test/helpers/TestBaseWorkflowV3.sol | 2 +- 7 files changed, 244 insertions(+), 518 deletions(-) diff --git a/broadcast/Deploy.s.sol/11155111/run-latest.json b/broadcast/Deploy.s.sol/11155111/run-latest.json index eedd06b..602f65d 100644 --- a/broadcast/Deploy.s.sol/11155111/run-latest.json +++ b/broadcast/Deploy.s.sol/11155111/run-latest.json @@ -1,24 +1,24 @@ { "transactions": [ { - "hash": "0xe6c7cdf601c9f5cc1bbf6f32f189e11c5f048b596cfc251b13acd92fb26480b8", + "hash": "0x744abea1518eacb09d8145a2ad59ca1d31b3ad138410e63f24fa6b6952a71c01", "transactionType": "CREATE", "contractName": "JBBuybackHook", - "contractAddress": "0x5DeE0C215e3aF9148d78dF6b782b05Bd6943f6a2", + "contractAddress": "0x7B79A8f039056421fb4eD51C342a9f5F6E027F70", "function": null, "arguments": [ "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9", "0x0227628f3F023bb0B980b67D528571c95c6DaC1c", - "0xcc90d826186BdaF48A3e54b585562DcAe335395c", - "0xE84d5Ca464daD7E43459D092726cCbd98D4Db5FA" + "0x2377a7f672dB76Cf42b591d16C68480f0fc54B14", + "0x074C1FCe99D705aFb8E5F1e7e4078D6585F1dce3" ], "transaction": { "type": "0x02", "from": "0x9c382eec918e14f4943912f07661d1de286c79ad", "gas": "0x417d22", "value": "0x0", - "data": "0x6101406040523480156200001257600080fd5b5060405162003d8838038062003d88833981016040819052620000359162000156565b806001600160a01b031663f434c9146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009a9190620001be565b6001600160a01b039081166080528481166101205282811660c05281811660e081905290841660a0526040805163293c499960e01b8152905163293c4999916004808201926020929091908290030181865afa158015620000ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001259190620001be565b6001600160a01b03166101005250620001e592505050565b6001600160a01b03811681146200015357600080fd5b50565b600080600080608085870312156200016d57600080fd5b84516200017a816200013d565b60208601519094506200018d816200013d565b6040860151909350620001a0816200013d565b6060860151909250620001b3816200013d565b939692955090935050565b600060208284031215620001d157600080fd5b8151620001de816200013d565b9392505050565b60805160a05160c05160e0516101005161012051613aea6200029e60003960008181610487015281816109bd01528181610f63015281816118a90152818161198801526121390152600081816102840152818161071e01528181610b740152610cbb0152600081816104fd01528181610dcd01528181611769015261231601526000818161042301526113200152600081816105780152610fa301526000818161054401528181611b1c0152611beb0152613aea6000f3fe60806040526004361061018b5760003560e01c8063889eedb4116100d6578063db312fae1161007f578063f434c91411610059578063f434c91414610532578063f73e5aab14610566578063fa461e331461059a57600080fd5b8063db312fae146104d5578063ee0fc121146104eb578063f3c578811461051f57600080fd5b8063ad5c4648116100b0578063ad5c464814610475578063af471880146104a9578063b88a92b4146104be57600080fd5b8063889eedb4146103c357806388bc2ef3146104115780639c9d43611461044557600080fd5b80634c4ffc7111610138578063677ce08811610112578063677ce0881461036a578063754baf961461038d5780637b621d3a146103a357600080fd5b80634c4ffc71146102e857806355135de0146103165780635bf579a41461033657600080fd5b806327e514111161016957806327e514111461020a578063293c4999146102725780633717fba7146102a657600080fd5b806301ffc9a714610190578063132893eb146101c55780631a65893b146101e7575b600080fd5b34801561019c57600080fd5b506101b06101ab366004612d12565b6105ba565b60405190151581526020015b60405180910390f35b3480156101d157600080fd5b506101e56101e0366004612d6d565b6106eb565b005b3480156101f357600080fd5b506101fc607881565b6040519081526020016101bc565b34801561021657600080fd5b5061024d610225366004612d99565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b34801561027e57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b257600080fd5b506102d36102c1366004612d99565b60009081526020819052604090205490565b60405163ffffffff90911681526020016101bc565b3480156102f457600080fd5b50610308610303366004612db2565b610899565b6040516101bc929190612e52565b34801561032257600080fd5b506101e5610331366004612f0e565b610b41565b34801561034257600080fd5b5061035c610351366004612f30565b610100013590606090565b6040516101bc929190612f6c565b34801561037657600080fd5b506101b061038536600461303d565b600092915050565b34801561039957600080fd5b506101fc61232881565b3480156103af57600080fd5b5061024d6103be36600461306d565b610c70565b3480156103cf57600080fd5b5061024d6103de36600461303d565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561041d57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561045157600080fd5b506101fc610460366004612d99565b60009081526020819052604090205460801c90565b34801561048157600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b557600080fd5b506101fc606481565b3480156104ca57600080fd5b506101fc6202a30081565b3480156104e157600080fd5b506101fc61271081565b3480156104f757600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b6101e561052d3660046130d2565b6112e8565b34801561053e57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057257600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a657600080fd5b506101e56105b536600461310e565b61186c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f70c6655d00000000000000000000000000000000000000000000000000000000148061064d57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3c5788100000000000000000000000000000000000000000000000000000000145b8061069957507fffffffff0000000000000000000000000000000000000000000000000000000082167f8f97abcd00000000000000000000000000000000000000000000000000000000145b806106e557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018390526107a7907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e906024015b602060405180830381865afa15801561077b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079f919061318e565b836019611a9f565b60788163ffffffff1610806107c457506202a3008163ffffffff16115b156107fb576040517fbbedb50a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604091829020805463ffffffff85167fffffffffffffffffffffffffffffffff000000000000000000000000000000008216811790925583516fffffffffffffffffffffffffffffffff821680825293810192909252339382019390935284907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce906060015b60405180910390a250505050565b610120810135606082810135600080808430811b6108f9816108bf6101608c018c6131ab565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c9592505050565b9093509150821561091d57818060200190518101906109189190613210565b955093505b50508160000361092b578391505b6000610946838861094160808c0135600a613383565b611e83565b60c08901356000908152600260205260408082205492935073ffffffffffffffffffffffffffffffffffffffff9092169161eeee9061098b9060608d01908d0161338f565b73ffffffffffffffffffffffffffffffffffffffff16146109bb576109b660608b0160408c0161338f565b6109dd565b7f00000000000000000000000000000000000000000000000000000000000000005b9050856000036109fa576109f78a60c00135838784611f99565b95505b85831015610b355786851115610a3c576040517f1f89071e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051600180825281830190925273ffffffffffffffffffffffffffffffffffffffff8381169085161091816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081610a6d5750506040805160608101825230815260208101899052919a50810186838b8a14610acc57610ac78a8d6133db565b610acf565b60005b604080519315156020850152911515918301919091526060820152608081018a905260a00160405160208183030381529060405281525089600081518110610b1957610b196133ee565b6020026020010181905250600099505050505050505050915091565b50505050505050915091565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101839052610bb8907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e9060240161075e565b6064811080610bc8575061232881115b15610bff576040517fa7149b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260208181526040918290208054608085811b6fffffffffffffffffffffffffffffffff83161790925583519181901c808352928201859052339382019390935284907faafe2470cbfb11a09f9b45d6a795226e93cc251e30fdcabddbabb157a1db53539060600161088b565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101869052600090610d2e9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d26919061318e565b87601a611a9f565b6064831080610d3e575061232883115b15610d75576040517fa7149b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60788463ffffffff161080610d9257506202a3008463ffffffff16115b15610dc9576040517fbbedb50a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631d831d5c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5a919061318e565b73ffffffffffffffffffffffffffffffffffffffff1663ea78803f886040518263ffffffff1660e01b8152600401610e9491815260200190565b602060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed5919061318e565b905073ffffffffffffffffffffffffffffffffffffffff8116610f24576040517fc0a8a55b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601610f85577f000000000000000000000000000000000000000000000000000000000000000092505b73ffffffffffffffffffffffffffffffffffffffff808416908216107f000000000000000000000000000000000000000000000000000000000000000081610fcd5784610fcf565b825b82610fda5783610fdc565b855b6040805173ffffffffffffffffffffffffffffffffffffffff9384166020820152929091169082015262ffffff89166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020918201206110d7939290917fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5491017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012060008b81526001845282812073ffffffffffffffffffffffffffffffffffffffff898116835294529190912054909450818516911603611179576040517f5f801a3e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600088815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855290835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116898416179091558c855284845282852063ffffffff8c1660808c901b8117909155600285528386208054909216928816929092179055815193845291830191909152339082015288907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce9060600160405180910390a26040805160008152602081018790523381830152905189917faafe2470cbfb11a09f9b45d6a795226e93cc251e30fdcabddbabb157a1db5353919081900360600190a26040805173ffffffffffffffffffffffffffffffffffffffff85811682523360208301528616918a917fe694de883385e30d535f625d68df4b2b5e866e8e86fe9d15554480c8d1812e60910160405180910390a3505095945050505050565b6040517f6e49181f000000000000000000000000000000000000000000000000000000008152602082013560048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636e49181f90604401602060405180830381865afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a0919061342b565b6113d6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080806113e96101c08601866131ab565b8101906113f69190613448565b9350935093509350600061140a86856120e9565b905084801561141857508181105b1561144f576040517f1d9e022400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061eeee611465610100890160e08a0161338f565b73ffffffffffffffffffffffffffffffffffffffff161461152657611491610100880160e0890161338f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611521919061348e565b611528565b475b90506000811561172d5761154b826101608a013561094160a08c0135600a613383565b905061eeee6115616101008a0160e08b0161338f565b73ffffffffffffffffffffffffffffffffffffffff16146116285761158d610100890160e08a0161338f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201526024810184905273ffffffffffffffffffffffffffffffffffffffff919091169063095ea7b3906044016020604051808303816000875af1158015611602573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611626919061342b565b505b600061eeee61163e6101008b0160e08c0161338f565b73ffffffffffffffffffffffffffffffffffffffff1614611660576000611662565b825b905033639e6eec058260208c01356116816101008e0160e08f0161338f565b876000604051806020016040528060008152506040518763ffffffff1660e01b81526004016116b49594939291906134a7565b6000604051808303818588803b1580156116cd57600080fd5b505af11580156116e1573d6000803e3d6000fd5b505060408051878152602080820188905233828401529151918e013594507faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e51693508190036060019150a2505b611746856101608a013561094160a08c0135600a613383565b6117509082613503565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663c7fb92de60208a013561179d8487613503565b6117af6101c08d016101a08e0161338f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915273ffffffffffffffffffffffffffffffffffffffff16604482015260a06064820152600060a48201526001608482015260c4016020604051808303816000875af115801561183d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611861919061348e565b505050505050505050565b60008061187b8385018561303d565b9092509050600073ffffffffffffffffffffffffffffffffffffffff821661eeee146118a757816118c9565b7f00000000000000000000000000000000000000000000000000000000000000005b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8581168552925290912054919250163314611936576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008088126119455787611947565b865b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601611a08577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119ee57600080fd5b505af1158015611a02573d6000803e3d6000fd5b50505050505b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff83169063a9059cbb906044016020604051808303816000875af1158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611861919061342b565b3373ffffffffffffffffffffffffffffffffffffffff84168114801590611b8957506040517fc161c93f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152858116602483015260448201859052606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063c161c93f90608401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b87919061342b565b155b8015611c5857506040517fc161c93f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152858116602483015260006044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063c161c93f90608401602060405180830381865afa158015611c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c56919061342b565b155b15611c8f576040517f075fd2b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600060606025835111611cba5750506040805160208101909152600080825290611e7c565b600083611cc960046020613503565b81518110611cd957611cd96133ee565b0160209081015160f81c91505b600085611cf4600484613503565b81518110611d0457611d046133ee565b01602001517fff000000000000000000000000000000000000000000000000000000000000001614801590611d425750611d3f602083613516565b81105b15611e7957600085611d55600484613503565b81518110611d6557611d656133ee565b016020908101518784019091015160f89190911c91507fffffffff0000000000000000000000000000000000000000000000000000000080891690821603611e6f576000611db4602086613516565b611dbf600986613503565b101580611e0c575087611dd3600986613503565b81518110611de357611de36133ee565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b611e4557602088611e1e600987613503565b81518110611e2e57611e2e6133ee565b0160200151611e40919060f81c613516565b611e48565b87515b90506001611e6189611e5b602087613516565b846123f7565b965096505050505050611e7c565b5050600501611ce6565b50505b9250929050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003611edb57838281611ed157611ed161352d565b0492505050611f92565b838110611f2a576040517f63a057780000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064015b60405180910390fd5b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff808616855292528083205481517f3850c7bd00000000000000000000000000000000000000000000000000000000815291519216918291633850c7bd9160048083019260e09291908290030181865afa92505050801561205a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526120579181019061356e565b60015b6120685760009150506120e1565b8061207e576000985050505050505050506120e1565b50505050505050600086815260208190526040812054908190608082901c906120a7858461243d565b5090506120b68189898c612701565b95506127106120c58388613516565b6120cf919061360d565b6120d990876133db565b955050505050505b949350505050565b60006101008301803590829061eeee906121069060e0880161338f565b73ffffffffffffffffffffffffffffffffffffffff161461213757612132610100860160e0870161338f565b612159565b7f00000000000000000000000000000000000000000000000000000000000000005b602080870135600090815260018252604080822073ffffffffffffffffffffffffffffffffffffffff80861684529352902054919250168063128acb0830871586896121b4576121af6401000276a36001613621565b6121d3565b6121d3600173fffd8963efd1fc6a506488495d951d5263988d26613655565b60208c01356121e96101008e0160e08f0161338f565b60405160200161221992919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612248959493929190613682565b60408051808303816000875af19250505080156122a0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261229d91810190613210565b60015b6122b057600093505050506106e5565b866122bb57806122bd565b815b6122c6906136c9565b6040517fa2d532e600000000000000000000000000000000000000000000000000000000815230600482015260208a013560248201526044810182905260806064820152600060848201529096507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063a2d532e6915060a401600060405180830381600087803b15801561237157600080fd5b505af1158015612385573d6000803e3d6000fd5b50506040805186815273ffffffffffffffffffffffffffffffffffffffff85166020828101919091529181018890523360608201529089013592507f6a212efdcd471836edcfe424121fc9048d3a7cd0458b1218a71aa915300e0e57915060800160405180910390a250505092915050565b60608282036040519150602081830101604052808252508260208501016020820160005b8481101561243357828101518282015260200161241b565b5050509392505050565b6000808263ffffffff166000036124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f42500000000000000000000000000000000000000000000000000000000000006044820152606401611f21565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106124e5576124e56133ee565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612514576125146133ee565b602002602001019063ffffffff16908163ffffffff16815250506000808673ffffffffffffffffffffffffffffffffffffffff1663883bdbfd846040518263ffffffff1660e01b815260040161256a9190613701565b600060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526125cd9190810190613836565b915091506000826000815181106125e6576125e66133ee565b602002602001015183600181518110612601576126016133ee565b60200260200101516126139190613902565b905060008260008151811061262a5761262a6133ee565b602002602001015183600181518110612645576126456133ee565b60200260200101516126579190613655565b905061266963ffffffff891683613947565b965060008260060b12801561268f575061268963ffffffff8916836139bb565b60060b15155b156126a2578661269e816139dd565b9750505b60006126c873ffffffffffffffffffffffffffffffffffffffff63ffffffff8b16613a3a565b90506126f277ffffffffffffffffffffffffffffffffffffffff00000000602084901b1682613a7d565b96505050505050509250929050565b60008061270d866128db565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff82161161280c57600061275e73ffffffffffffffffffffffffffffffffffffffff831680613516565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106127ce576127c97801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683612c42565b612804565b61280481876fffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000612c42565b9250506128d2565b600061283873ffffffffffffffffffffffffffffffffffffffff83168068010000000000000000612c42565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106128a05761289b700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683612c42565b6128ce565b6128ce81876fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612c42565b9250505b50949350505050565b60008060008360020b126128f2578260020b6128fa565b8260020b6000035b9050620d89e8811115612939576040517f2bc80f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160011660000361295d5770010000000000000000000000000000000061296f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156129a3576ffff97272373d413259a46990580e213a0260801c5b60048216156129c2576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156129e1576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612a00576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612a1f576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612a3e576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612a5d576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612a7d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612a9d576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612abd576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612add576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612afd576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612b1d576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612b3d576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612b5d576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612b7e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612b9e576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612bbd576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612bda576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612c1957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612c1557612c1561352d565b0490505b640100000000810615612c2d576001612c30565b60005b60ff16602082901c0192505050919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003612c995760008411612c8e57600080fd5b508290049050611f92565b808411612ca557600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600060208284031215612d2457600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611f9257600080fd5b803563ffffffff81168114612d6857600080fd5b919050565b60008060408385031215612d8057600080fd5b82359150612d9060208401612d54565b90509250929050565b600060208284031215612dab57600080fd5b5035919050565b600060208284031215612dc457600080fd5b813567ffffffffffffffff811115612ddb57600080fd5b82016101808185031215611f9257600080fd5b6000815180845260005b81811015612e1457602081850181015186830182015201612df8565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6000604080830185845260206040818601528186518084526060935060608701915060608160051b88010183890160005b83811015612efe578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff1684528681015187850152880151888401889052612eeb88850182612dee565b9587019593505090850190600101612e83565b50909a9950505050505050505050565b60008060408385031215612f2157600080fd5b50508035926020909101359150565b600060208284031215612f4257600080fd5b813567ffffffffffffffff811115612f5957600080fd5b82016101c08185031215611f9257600080fd5b6000604080830185845260206040818601528186518084526060935060608701915060608160051b88010183890160005b83811015612efe578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff168452868101518785015288015188840188905261300588850182612dee565b9587019593505090850190600101612f9d565b73ffffffffffffffffffffffffffffffffffffffff8116811461303a57600080fd5b50565b6000806040838503121561305057600080fd5b82359150602083013561306281613018565b809150509250929050565b600080600080600060a0868803121561308557600080fd5b85359450602086013562ffffff8116811461309f57600080fd5b93506130ad60408701612d54565b92506060860135915060808601356130c481613018565b809150509295509295909350565b6000602082840312156130e457600080fd5b813567ffffffffffffffff8111156130fb57600080fd5b82016102008185031215611f9257600080fd5b6000806000806060858703121561312457600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561314a57600080fd5b818701915087601f83011261315e57600080fd5b81358181111561316d57600080fd5b88602082850101111561317f57600080fd5b95989497505060200194505050565b6000602082840312156131a057600080fd5b8151611f9281613018565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131e057600080fd5b83018035915067ffffffffffffffff8211156131fb57600080fd5b602001915036819003821315611e7c57600080fd5b6000806040838503121561322357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156132bc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156132a2576132a2613234565b808516156132af57918102915b93841c9390800290613268565b509250929050565b6000826132d3575060016106e5565b816132e0575060006106e5565b81600181146132f657600281146133005761331c565b60019150506106e5565b60ff84111561331157613311613234565b50506001821b6106e5565b5060208310610133831016604e8410600b841016171561333f575081810a6106e5565b6133498383613263565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561337b5761337b613234565b029392505050565b6000611f9283836132c4565b6000602082840312156133a157600080fd5b8135611f9281613018565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b818103818111156106e5576106e5613234565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b801515811461303a57600080fd5b60006020828403121561343d57600080fd5b8151611f928161341d565b6000806000806080858703121561345e57600080fd5b84356134698161341d565b935060208501356134798161341d565b93969395505050506040820135916060013590565b6000602082840312156134a057600080fd5b5051919050565b85815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152821515606082015260c06080820152600060c082015260e060a082015260006134f860e0830184612dee565b979650505050505050565b808201808211156106e5576106e5613234565b80820281158282048414176106e5576106e5613234565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b805161ffff81168114612d6857600080fd5b600080600080600080600060e0888a03121561358957600080fd5b875161359481613018565b8097505060208801518060020b81146135ac57600080fd5b95506135ba6040890161355c565b94506135c86060890161355c565b93506135d66080890161355c565b925060a088015160ff811681146135ec57600080fd5b60c08901519092506135fd8161341d565b8091505092959891949750929550565b60008261361c5761361c61352d565b500490565b73ffffffffffffffffffffffffffffffffffffffff81811683821601908082111561364e5761364e613234565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908082111561364e5761364e613234565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526134f860a0830184612dee565b60007f800000000000000000000000000000000000000000000000000000000000000082036136fa576136fa613234565b5060000390565b6020808252825182820181905260009190848201906040850190845b8181101561373f57835163ffffffff168352928401929184019160010161371d565b50909695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613792576137926133ac565b604052919050565b600067ffffffffffffffff8211156137b4576137b46133ac565b5060051b60200190565b600082601f8301126137cf57600080fd5b815160206137e46137df8361379a565b61374b565b8083825260208201915060208460051b87010193508684111561380657600080fd5b602086015b8481101561382b57805161381e81613018565b835291830191830161380b565b509695505050505050565b6000806040838503121561384957600080fd5b825167ffffffffffffffff8082111561386157600080fd5b818501915085601f83011261387557600080fd5b815160206138856137df8361379a565b82815260059290921b840181019181810190898411156138a457600080fd5b948201945b838610156138d25785518060060b81146138c35760008081fd5b825294820194908201906138a9565b918801519196509093505050808211156138eb57600080fd5b506138f8858286016137be565b9150509250929050565b600682810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffff800000000000008112667fffffffffffff821317156106e5576106e5613234565b60008160060b8360060b8061395e5761395e61352d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000831416156139b2576139b2613234565b90059392505050565b60008260060b806139ce576139ce61352d565b808360060b0791505092915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103613a1257613a12613234565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116828216818102831692918115828504821417613a7457613a74613234565b50505092915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff80841680613aa857613aa861352d565b9216919091049291505056fea2646970667358221220fa8176add94916e93c2bc826fd6a057598458761f196a2a131c6579f277548f364736f6c634300081700330000000000000000000000007b79995e5f793a07bc00c21412e50ecae098e7f90000000000000000000000000227628f3f023bb0b980b67d528571c95c6dac1c000000000000000000000000cc90d826186bdaf48a3e54b585562dcae335395c000000000000000000000000e84d5ca464dad7e43459d092726ccbd98d4db5fa", - "nonce": "0x145", + "data": "0x6101406040523480156200001257600080fd5b5060405162003d8838038062003d88833981016040819052620000359162000156565b806001600160a01b031663f434c9146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009a9190620001be565b6001600160a01b039081166080528481166101205282811660c05281811660e081905290841660a0526040805163293c499960e01b8152905163293c4999916004808201926020929091908290030181865afa158015620000ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001259190620001be565b6001600160a01b03166101005250620001e592505050565b6001600160a01b03811681146200015357600080fd5b50565b600080600080608085870312156200016d57600080fd5b84516200017a816200013d565b60208601519094506200018d816200013d565b6040860151909350620001a0816200013d565b6060860151909250620001b3816200013d565b939692955090935050565b600060208284031215620001d157600080fd5b8151620001de816200013d565b9392505050565b60805160a05160c05160e0516101005161012051613aea6200029e60003960008181610487015281816109bd01528181610f63015281816118a90152818161198801526121390152600081816102840152818161071e01528181610b740152610cbb0152600081816104fd01528181610dcd01528181611769015261231601526000818161042301526113200152600081816105780152610fa301526000818161054401528181611b1c0152611beb0152613aea6000f3fe60806040526004361061018b5760003560e01c8063889eedb4116100d6578063db312fae1161007f578063f434c91411610059578063f434c91414610532578063f73e5aab14610566578063fa461e331461059a57600080fd5b8063db312fae146104d5578063ee0fc121146104eb578063f3c578811461051f57600080fd5b8063ad5c4648116100b0578063ad5c464814610475578063af471880146104a9578063b88a92b4146104be57600080fd5b8063889eedb4146103c357806388bc2ef3146104115780639c9d43611461044557600080fd5b80634c4ffc7111610138578063677ce08811610112578063677ce0881461036a578063754baf961461038d5780637b621d3a146103a357600080fd5b80634c4ffc71146102e857806355135de0146103165780635bf579a41461033657600080fd5b806327e514111161016957806327e514111461020a578063293c4999146102725780633717fba7146102a657600080fd5b806301ffc9a714610190578063132893eb146101c55780631a65893b146101e7575b600080fd5b34801561019c57600080fd5b506101b06101ab366004612d12565b6105ba565b60405190151581526020015b60405180910390f35b3480156101d157600080fd5b506101e56101e0366004612d6d565b6106eb565b005b3480156101f357600080fd5b506101fc607881565b6040519081526020016101bc565b34801561021657600080fd5b5061024d610225366004612d99565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b34801561027e57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b257600080fd5b506102d36102c1366004612d99565b60009081526020819052604090205490565b60405163ffffffff90911681526020016101bc565b3480156102f457600080fd5b50610308610303366004612db2565b610899565b6040516101bc929190612e52565b34801561032257600080fd5b506101e5610331366004612f0e565b610b41565b34801561034257600080fd5b5061035c610351366004612f30565b610100013590606090565b6040516101bc929190612f6c565b34801561037657600080fd5b506101b061038536600461303d565b600092915050565b34801561039957600080fd5b506101fc61232881565b3480156103af57600080fd5b5061024d6103be36600461306d565b610c70565b3480156103cf57600080fd5b5061024d6103de36600461303d565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561041d57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561045157600080fd5b506101fc610460366004612d99565b60009081526020819052604090205460801c90565b34801561048157600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b557600080fd5b506101fc606481565b3480156104ca57600080fd5b506101fc6202a30081565b3480156104e157600080fd5b506101fc61271081565b3480156104f757600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b6101e561052d3660046130d2565b6112e8565b34801561053e57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057257600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a657600080fd5b506101e56105b536600461310e565b61186c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f70c6655d00000000000000000000000000000000000000000000000000000000148061064d57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3c5788100000000000000000000000000000000000000000000000000000000145b8061069957507fffffffff0000000000000000000000000000000000000000000000000000000082167f8f97abcd00000000000000000000000000000000000000000000000000000000145b806106e557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018390526107a7907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e906024015b602060405180830381865afa15801561077b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079f919061318e565b836019611a9f565b60788163ffffffff1610806107c457506202a3008163ffffffff16115b156107fb576040517fbbedb50a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604091829020805463ffffffff85167fffffffffffffffffffffffffffffffff000000000000000000000000000000008216811790925583516fffffffffffffffffffffffffffffffff821680825293810192909252339382019390935284907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce906060015b60405180910390a250505050565b610120810135606082810135600080808430811b6108f9816108bf6101608c018c6131ab565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c9592505050565b9093509150821561091d57818060200190518101906109189190613210565b955093505b50508160000361092b578391505b6000610946838861094160808c0135600a613383565b611e83565b60c08901356000908152600260205260408082205492935073ffffffffffffffffffffffffffffffffffffffff9092169161eeee9061098b9060608d01908d0161338f565b73ffffffffffffffffffffffffffffffffffffffff16146109bb576109b660608b0160408c0161338f565b6109dd565b7f00000000000000000000000000000000000000000000000000000000000000005b9050856000036109fa576109f78a60c00135838784611f99565b95505b85831015610b355786851115610a3c576040517f1f89071e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051600180825281830190925273ffffffffffffffffffffffffffffffffffffffff8381169085161091816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081610a6d5750506040805160608101825230815260208101899052919a50810186838b8a14610acc57610ac78a8d6133db565b610acf565b60005b604080519315156020850152911515918301919091526060820152608081018a905260a00160405160208183030381529060405281525089600081518110610b1957610b196133ee565b6020026020010181905250600099505050505050505050915091565b50505050505050915091565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101839052610bb8907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e9060240161075e565b6064811080610bc8575061232881115b15610bff576040517fa7149b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260208181526040918290208054608085811b6fffffffffffffffffffffffffffffffff83161790925583519181901c808352928201859052339382019390935284907faafe2470cbfb11a09f9b45d6a795226e93cc251e30fdcabddbabb157a1db53539060600161088b565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101869052600090610d2e9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d26919061318e565b87601a611a9f565b6064831080610d3e575061232883115b15610d75576040517fa7149b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60788463ffffffff161080610d9257506202a3008463ffffffff16115b15610dc9576040517fbbedb50a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631d831d5c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5a919061318e565b73ffffffffffffffffffffffffffffffffffffffff1663ea78803f886040518263ffffffff1660e01b8152600401610e9491815260200190565b602060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed5919061318e565b905073ffffffffffffffffffffffffffffffffffffffff8116610f24576040517fc0a8a55b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601610f85577f000000000000000000000000000000000000000000000000000000000000000092505b73ffffffffffffffffffffffffffffffffffffffff808416908216107f000000000000000000000000000000000000000000000000000000000000000081610fcd5784610fcf565b825b82610fda5783610fdc565b855b6040805173ffffffffffffffffffffffffffffffffffffffff9384166020820152929091169082015262ffffff89166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020918201206110d7939290917fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5491017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012060008b81526001845282812073ffffffffffffffffffffffffffffffffffffffff898116835294529190912054909450818516911603611179576040517f5f801a3e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600088815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855290835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116898416179091558c855284845282852063ffffffff8c1660808c901b8117909155600285528386208054909216928816929092179055815193845291830191909152339082015288907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce9060600160405180910390a26040805160008152602081018790523381830152905189917faafe2470cbfb11a09f9b45d6a795226e93cc251e30fdcabddbabb157a1db5353919081900360600190a26040805173ffffffffffffffffffffffffffffffffffffffff85811682523360208301528616918a917fe694de883385e30d535f625d68df4b2b5e866e8e86fe9d15554480c8d1812e60910160405180910390a3505095945050505050565b6040517f6e49181f000000000000000000000000000000000000000000000000000000008152602082013560048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636e49181f90604401602060405180830381865afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a0919061342b565b6113d6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080806113e96101c08601866131ab565b8101906113f69190613448565b9350935093509350600061140a86856120e9565b905084801561141857508181105b1561144f576040517f1d9e022400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061eeee611465610100890160e08a0161338f565b73ffffffffffffffffffffffffffffffffffffffff161461152657611491610100880160e0890161338f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611521919061348e565b611528565b475b90506000811561172d5761154b826101608a013561094160a08c0135600a613383565b905061eeee6115616101008a0160e08b0161338f565b73ffffffffffffffffffffffffffffffffffffffff16146116285761158d610100890160e08a0161338f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201526024810184905273ffffffffffffffffffffffffffffffffffffffff919091169063095ea7b3906044016020604051808303816000875af1158015611602573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611626919061342b565b505b600061eeee61163e6101008b0160e08c0161338f565b73ffffffffffffffffffffffffffffffffffffffff1614611660576000611662565b825b905033639e6eec058260208c01356116816101008e0160e08f0161338f565b876000604051806020016040528060008152506040518763ffffffff1660e01b81526004016116b49594939291906134a7565b6000604051808303818588803b1580156116cd57600080fd5b505af11580156116e1573d6000803e3d6000fd5b505060408051878152602080820188905233828401529151918e013594507faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e51693508190036060019150a2505b611746856101608a013561094160a08c0135600a613383565b6117509082613503565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663c7fb92de60208a013561179d8487613503565b6117af6101c08d016101a08e0161338f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915273ffffffffffffffffffffffffffffffffffffffff16604482015260a06064820152600060a48201526001608482015260c4016020604051808303816000875af115801561183d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611861919061348e565b505050505050505050565b60008061187b8385018561303d565b9092509050600073ffffffffffffffffffffffffffffffffffffffff821661eeee146118a757816118c9565b7f00000000000000000000000000000000000000000000000000000000000000005b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8581168552925290912054919250163314611936576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008088126119455787611947565b865b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601611a08577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119ee57600080fd5b505af1158015611a02573d6000803e3d6000fd5b50505050505b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff83169063a9059cbb906044016020604051808303816000875af1158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611861919061342b565b3373ffffffffffffffffffffffffffffffffffffffff84168114801590611b8957506040517fc161c93f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152858116602483015260448201859052606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063c161c93f90608401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b87919061342b565b155b8015611c5857506040517fc161c93f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152858116602483015260006044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063c161c93f90608401602060405180830381865afa158015611c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c56919061342b565b155b15611c8f576040517f075fd2b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600060606025835111611cba5750506040805160208101909152600080825290611e7c565b600083611cc960046020613503565b81518110611cd957611cd96133ee565b0160209081015160f81c91505b600085611cf4600484613503565b81518110611d0457611d046133ee565b01602001517fff000000000000000000000000000000000000000000000000000000000000001614801590611d425750611d3f602083613516565b81105b15611e7957600085611d55600484613503565b81518110611d6557611d656133ee565b016020908101518784019091015160f89190911c91507fffffffff0000000000000000000000000000000000000000000000000000000080891690821603611e6f576000611db4602086613516565b611dbf600986613503565b101580611e0c575087611dd3600986613503565b81518110611de357611de36133ee565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b611e4557602088611e1e600987613503565b81518110611e2e57611e2e6133ee565b0160200151611e40919060f81c613516565b611e48565b87515b90506001611e6189611e5b602087613516565b846123f7565b965096505050505050611e7c565b5050600501611ce6565b50505b9250929050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003611edb57838281611ed157611ed161352d565b0492505050611f92565b838110611f2a576040517f63a057780000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064015b60405180910390fd5b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff808616855292528083205481517f3850c7bd00000000000000000000000000000000000000000000000000000000815291519216918291633850c7bd9160048083019260e09291908290030181865afa92505050801561205a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526120579181019061356e565b60015b6120685760009150506120e1565b8061207e576000985050505050505050506120e1565b50505050505050600086815260208190526040812054908190608082901c906120a7858461243d565b5090506120b68189898c612701565b95506127106120c58388613516565b6120cf919061360d565b6120d990876133db565b955050505050505b949350505050565b60006101008301803590829061eeee906121069060e0880161338f565b73ffffffffffffffffffffffffffffffffffffffff161461213757612132610100860160e0870161338f565b612159565b7f00000000000000000000000000000000000000000000000000000000000000005b602080870135600090815260018252604080822073ffffffffffffffffffffffffffffffffffffffff80861684529352902054919250168063128acb0830871586896121b4576121af6401000276a36001613621565b6121d3565b6121d3600173fffd8963efd1fc6a506488495d951d5263988d26613655565b60208c01356121e96101008e0160e08f0161338f565b60405160200161221992919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612248959493929190613682565b60408051808303816000875af19250505080156122a0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261229d91810190613210565b60015b6122b057600093505050506106e5565b866122bb57806122bd565b815b6122c6906136c9565b6040517fa2d532e600000000000000000000000000000000000000000000000000000000815230600482015260208a013560248201526044810182905260806064820152600060848201529096507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063a2d532e6915060a401600060405180830381600087803b15801561237157600080fd5b505af1158015612385573d6000803e3d6000fd5b50506040805186815273ffffffffffffffffffffffffffffffffffffffff85166020828101919091529181018890523360608201529089013592507f6a212efdcd471836edcfe424121fc9048d3a7cd0458b1218a71aa915300e0e57915060800160405180910390a250505092915050565b60608282036040519150602081830101604052808252508260208501016020820160005b8481101561243357828101518282015260200161241b565b5050509392505050565b6000808263ffffffff166000036124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f42500000000000000000000000000000000000000000000000000000000000006044820152606401611f21565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106124e5576124e56133ee565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612514576125146133ee565b602002602001019063ffffffff16908163ffffffff16815250506000808673ffffffffffffffffffffffffffffffffffffffff1663883bdbfd846040518263ffffffff1660e01b815260040161256a9190613701565b600060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526125cd9190810190613836565b915091506000826000815181106125e6576125e66133ee565b602002602001015183600181518110612601576126016133ee565b60200260200101516126139190613902565b905060008260008151811061262a5761262a6133ee565b602002602001015183600181518110612645576126456133ee565b60200260200101516126579190613655565b905061266963ffffffff891683613947565b965060008260060b12801561268f575061268963ffffffff8916836139bb565b60060b15155b156126a2578661269e816139dd565b9750505b60006126c873ffffffffffffffffffffffffffffffffffffffff63ffffffff8b16613a3a565b90506126f277ffffffffffffffffffffffffffffffffffffffff00000000602084901b1682613a7d565b96505050505050509250929050565b60008061270d866128db565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff82161161280c57600061275e73ffffffffffffffffffffffffffffffffffffffff831680613516565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106127ce576127c97801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683612c42565b612804565b61280481876fffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000612c42565b9250506128d2565b600061283873ffffffffffffffffffffffffffffffffffffffff83168068010000000000000000612c42565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106128a05761289b700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683612c42565b6128ce565b6128ce81876fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612c42565b9250505b50949350505050565b60008060008360020b126128f2578260020b6128fa565b8260020b6000035b9050620d89e8811115612939576040517f2bc80f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160011660000361295d5770010000000000000000000000000000000061296f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156129a3576ffff97272373d413259a46990580e213a0260801c5b60048216156129c2576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156129e1576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612a00576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612a1f576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612a3e576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612a5d576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612a7d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612a9d576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612abd576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612add576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612afd576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612b1d576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612b3d576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612b5d576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612b7e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612b9e576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612bbd576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612bda576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612c1957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612c1557612c1561352d565b0490505b640100000000810615612c2d576001612c30565b60005b60ff16602082901c0192505050919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003612c995760008411612c8e57600080fd5b508290049050611f92565b808411612ca557600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600060208284031215612d2457600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611f9257600080fd5b803563ffffffff81168114612d6857600080fd5b919050565b60008060408385031215612d8057600080fd5b82359150612d9060208401612d54565b90509250929050565b600060208284031215612dab57600080fd5b5035919050565b600060208284031215612dc457600080fd5b813567ffffffffffffffff811115612ddb57600080fd5b82016101808185031215611f9257600080fd5b6000815180845260005b81811015612e1457602081850181015186830182015201612df8565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6000604080830185845260206040818601528186518084526060935060608701915060608160051b88010183890160005b83811015612efe578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff1684528681015187850152880151888401889052612eeb88850182612dee565b9587019593505090850190600101612e83565b50909a9950505050505050505050565b60008060408385031215612f2157600080fd5b50508035926020909101359150565b600060208284031215612f4257600080fd5b813567ffffffffffffffff811115612f5957600080fd5b82016101c08185031215611f9257600080fd5b6000604080830185845260206040818601528186518084526060935060608701915060608160051b88010183890160005b83811015612efe578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff168452868101518785015288015188840188905261300588850182612dee565b9587019593505090850190600101612f9d565b73ffffffffffffffffffffffffffffffffffffffff8116811461303a57600080fd5b50565b6000806040838503121561305057600080fd5b82359150602083013561306281613018565b809150509250929050565b600080600080600060a0868803121561308557600080fd5b85359450602086013562ffffff8116811461309f57600080fd5b93506130ad60408701612d54565b92506060860135915060808601356130c481613018565b809150509295509295909350565b6000602082840312156130e457600080fd5b813567ffffffffffffffff8111156130fb57600080fd5b82016102008185031215611f9257600080fd5b6000806000806060858703121561312457600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561314a57600080fd5b818701915087601f83011261315e57600080fd5b81358181111561316d57600080fd5b88602082850101111561317f57600080fd5b95989497505060200194505050565b6000602082840312156131a057600080fd5b8151611f9281613018565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131e057600080fd5b83018035915067ffffffffffffffff8211156131fb57600080fd5b602001915036819003821315611e7c57600080fd5b6000806040838503121561322357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156132bc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156132a2576132a2613234565b808516156132af57918102915b93841c9390800290613268565b509250929050565b6000826132d3575060016106e5565b816132e0575060006106e5565b81600181146132f657600281146133005761331c565b60019150506106e5565b60ff84111561331157613311613234565b50506001821b6106e5565b5060208310610133831016604e8410600b841016171561333f575081810a6106e5565b6133498383613263565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561337b5761337b613234565b029392505050565b6000611f9283836132c4565b6000602082840312156133a157600080fd5b8135611f9281613018565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b818103818111156106e5576106e5613234565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b801515811461303a57600080fd5b60006020828403121561343d57600080fd5b8151611f928161341d565b6000806000806080858703121561345e57600080fd5b84356134698161341d565b935060208501356134798161341d565b93969395505050506040820135916060013590565b6000602082840312156134a057600080fd5b5051919050565b85815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152821515606082015260c06080820152600060c082015260e060a082015260006134f860e0830184612dee565b979650505050505050565b808201808211156106e5576106e5613234565b80820281158282048414176106e5576106e5613234565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b805161ffff81168114612d6857600080fd5b600080600080600080600060e0888a03121561358957600080fd5b875161359481613018565b8097505060208801518060020b81146135ac57600080fd5b95506135ba6040890161355c565b94506135c86060890161355c565b93506135d66080890161355c565b925060a088015160ff811681146135ec57600080fd5b60c08901519092506135fd8161341d565b8091505092959891949750929550565b60008261361c5761361c61352d565b500490565b73ffffffffffffffffffffffffffffffffffffffff81811683821601908082111561364e5761364e613234565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908082111561364e5761364e613234565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526134f860a0830184612dee565b60007f800000000000000000000000000000000000000000000000000000000000000082036136fa576136fa613234565b5060000390565b6020808252825182820181905260009190848201906040850190845b8181101561373f57835163ffffffff168352928401929184019160010161371d565b50909695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613792576137926133ac565b604052919050565b600067ffffffffffffffff8211156137b4576137b46133ac565b5060051b60200190565b600082601f8301126137cf57600080fd5b815160206137e46137df8361379a565b61374b565b8083825260208201915060208460051b87010193508684111561380657600080fd5b602086015b8481101561382b57805161381e81613018565b835291830191830161380b565b509695505050505050565b6000806040838503121561384957600080fd5b825167ffffffffffffffff8082111561386157600080fd5b818501915085601f83011261387557600080fd5b815160206138856137df8361379a565b82815260059290921b840181019181810190898411156138a457600080fd5b948201945b838610156138d25785518060060b81146138c35760008081fd5b825294820194908201906138a9565b918801519196509093505050808211156138eb57600080fd5b506138f8858286016137be565b9150509250929050565b600682810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffff800000000000008112667fffffffffffff821317156106e5576106e5613234565b60008160060b8360060b8061395e5761395e61352d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000831416156139b2576139b2613234565b90059392505050565b60008260060b806139ce576139ce61352d565b808360060b0791505092915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103613a1257613a12613234565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116828216818102831692918115828504821417613a7457613a74613234565b50505092915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff80841680613aa857613aa861352d565b9216919091049291505056fea2646970667358221220bb101682cd16df02b1a9196c3bed9d0d7a16bd5b3b75c3d782fae0f8e8e8aa2264736f6c634300081700330000000000000000000000007b79995e5f793a07bc00c21412e50ecae098e7f90000000000000000000000000227628f3f023bb0b980b67d528571c95c6dac1c0000000000000000000000002377a7f672db76cf42b591d16c68480f0fc54b14000000000000000000000000074c1fce99d705afb8e5f1e7e4078d6585f1dce3", + "nonce": "0x1dc", "accessList": [] }, "additionalContracts": [], @@ -27,27 +27,27 @@ ], "receipts": [ { - "transactionHash": "0xe6c7cdf601c9f5cc1bbf6f32f189e11c5f048b596cfc251b13acd92fb26480b8", - "transactionIndex": "0xc", - "blockHash": "0xd8c8617d3a233db16d22bb057b598e01571beb4a8eb215964ed3ba5a1bdeeaff", - "blockNumber": "0x4fa5d8", + "transactionHash": "0x744abea1518eacb09d8145a2ad59ca1d31b3ad138410e63f24fa6b6952a71c01", + "transactionIndex": "0xce", + "blockHash": "0xead58faf29344121cbc8ee4f5ed09d7a34467826e114eefd0041ffc340b9b973", + "blockNumber": "0x5083ee", "from": "0x9C382eEC918e14F4943912F07661D1de286c79ad", "to": null, - "cumulativeGasUsed": "0x3c08ec", + "cumulativeGasUsed": "0x10222d1", "gasUsed": "0x326424", - "contractAddress": "0x5DeE0C215e3aF9148d78dF6b782b05Bd6943f6a2", + "contractAddress": "0x7B79A8f039056421fb4eD51C342a9f5F6E027F70", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0x1f2066652" + "effectiveGasPrice": "0x342cd9b08" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1707073038, + "timestamp": 1707790385, "chain": 11155111, "multi": false, - "commit": "c552395" + "commit": "683b218" } \ No newline at end of file diff --git a/broadcast/Deploy.s.sol/11155420/run-latest.json b/broadcast/Deploy.s.sol/11155420/run-latest.json index 81ade5f..d394cac 100644 --- a/broadcast/Deploy.s.sol/11155420/run-latest.json +++ b/broadcast/Deploy.s.sol/11155420/run-latest.json @@ -1,24 +1,24 @@ { "transactions": [ { - "hash": "0x40b1c734310754e21c0bfd2e8e52c8d0b8eb9d8051d6742e209b7e7073c408e7", + "hash": "0x15f02e95ced8b974088157f230c4287f1de16d6824c10c9b28a8b0b5c71f49ea", "transactionType": "CREATE", "contractName": "JBBuybackHook", - "contractAddress": "0x6A9E7C0D8f076839D2aFeb213A98A61Ff74763dB", + "contractAddress": "0x89fA1ab941aB8aB0e9367c0D18260e2D09543611", "function": null, "arguments": [ "0x4200000000000000000000000000000000000006", "0x0000000000000000000000000000000000000000", - "0x3465E29595F0e68dc341C8Bfc6be1b43e0B4452B", - "0x5B77E39c145AE9f9b9272FbD1f866226ae482432" + "0xCD62D579077Ba9B37052527AbB4cB6CbE349fAba", + "0xfB74D49104a97Ded6730a3A3a40D4fFEE55DecC7" ], "transaction": { "type": "0x02", "from": "0x9c382eec918e14f4943912f07661d1de286c79ad", "gas": "0x417ae1", "value": "0x0", - "data": "0x6101406040523480156200001257600080fd5b5060405162003d8838038062003d88833981016040819052620000359162000156565b806001600160a01b031663f434c9146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009a9190620001be565b6001600160a01b039081166080528481166101205282811660c05281811660e081905290841660a0526040805163293c499960e01b8152905163293c4999916004808201926020929091908290030181865afa158015620000ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001259190620001be565b6001600160a01b03166101005250620001e592505050565b6001600160a01b03811681146200015357600080fd5b50565b600080600080608085870312156200016d57600080fd5b84516200017a816200013d565b60208601519094506200018d816200013d565b6040860151909350620001a0816200013d565b6060860151909250620001b3816200013d565b939692955090935050565b600060208284031215620001d157600080fd5b8151620001de816200013d565b9392505050565b60805160a05160c05160e0516101005161012051613aea6200029e60003960008181610487015281816109bd01528181610f63015281816118a90152818161198801526121390152600081816102840152818161071e01528181610b740152610cbb0152600081816104fd01528181610dcd01528181611769015261231601526000818161042301526113200152600081816105780152610fa301526000818161054401528181611b1c0152611beb0152613aea6000f3fe60806040526004361061018b5760003560e01c8063889eedb4116100d6578063db312fae1161007f578063f434c91411610059578063f434c91414610532578063f73e5aab14610566578063fa461e331461059a57600080fd5b8063db312fae146104d5578063ee0fc121146104eb578063f3c578811461051f57600080fd5b8063ad5c4648116100b0578063ad5c464814610475578063af471880146104a9578063b88a92b4146104be57600080fd5b8063889eedb4146103c357806388bc2ef3146104115780639c9d43611461044557600080fd5b80634c4ffc7111610138578063677ce08811610112578063677ce0881461036a578063754baf961461038d5780637b621d3a146103a357600080fd5b80634c4ffc71146102e857806355135de0146103165780635bf579a41461033657600080fd5b806327e514111161016957806327e514111461020a578063293c4999146102725780633717fba7146102a657600080fd5b806301ffc9a714610190578063132893eb146101c55780631a65893b146101e7575b600080fd5b34801561019c57600080fd5b506101b06101ab366004612d12565b6105ba565b60405190151581526020015b60405180910390f35b3480156101d157600080fd5b506101e56101e0366004612d6d565b6106eb565b005b3480156101f357600080fd5b506101fc607881565b6040519081526020016101bc565b34801561021657600080fd5b5061024d610225366004612d99565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b34801561027e57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b257600080fd5b506102d36102c1366004612d99565b60009081526020819052604090205490565b60405163ffffffff90911681526020016101bc565b3480156102f457600080fd5b50610308610303366004612db2565b610899565b6040516101bc929190612e52565b34801561032257600080fd5b506101e5610331366004612f0e565b610b41565b34801561034257600080fd5b5061035c610351366004612f30565b610100013590606090565b6040516101bc929190612f6c565b34801561037657600080fd5b506101b061038536600461303d565b600092915050565b34801561039957600080fd5b506101fc61232881565b3480156103af57600080fd5b5061024d6103be36600461306d565b610c70565b3480156103cf57600080fd5b5061024d6103de36600461303d565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561041d57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561045157600080fd5b506101fc610460366004612d99565b60009081526020819052604090205460801c90565b34801561048157600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b557600080fd5b506101fc606481565b3480156104ca57600080fd5b506101fc6202a30081565b3480156104e157600080fd5b506101fc61271081565b3480156104f757600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b6101e561052d3660046130d2565b6112e8565b34801561053e57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057257600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a657600080fd5b506101e56105b536600461310e565b61186c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f70c6655d00000000000000000000000000000000000000000000000000000000148061064d57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3c5788100000000000000000000000000000000000000000000000000000000145b8061069957507fffffffff0000000000000000000000000000000000000000000000000000000082167f8f97abcd00000000000000000000000000000000000000000000000000000000145b806106e557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018390526107a7907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e906024015b602060405180830381865afa15801561077b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079f919061318e565b836019611a9f565b60788163ffffffff1610806107c457506202a3008163ffffffff16115b156107fb576040517fbbedb50a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604091829020805463ffffffff85167fffffffffffffffffffffffffffffffff000000000000000000000000000000008216811790925583516fffffffffffffffffffffffffffffffff821680825293810192909252339382019390935284907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce906060015b60405180910390a250505050565b610120810135606082810135600080808430811b6108f9816108bf6101608c018c6131ab565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c9592505050565b9093509150821561091d57818060200190518101906109189190613210565b955093505b50508160000361092b578391505b6000610946838861094160808c0135600a613383565b611e83565b60c08901356000908152600260205260408082205492935073ffffffffffffffffffffffffffffffffffffffff9092169161eeee9061098b9060608d01908d0161338f565b73ffffffffffffffffffffffffffffffffffffffff16146109bb576109b660608b0160408c0161338f565b6109dd565b7f00000000000000000000000000000000000000000000000000000000000000005b9050856000036109fa576109f78a60c00135838784611f99565b95505b85831015610b355786851115610a3c576040517f1f89071e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051600180825281830190925273ffffffffffffffffffffffffffffffffffffffff8381169085161091816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081610a6d5750506040805160608101825230815260208101899052919a50810186838b8a14610acc57610ac78a8d6133db565b610acf565b60005b604080519315156020850152911515918301919091526060820152608081018a905260a00160405160208183030381529060405281525089600081518110610b1957610b196133ee565b6020026020010181905250600099505050505050505050915091565b50505050505050915091565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101839052610bb8907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e9060240161075e565b6064811080610bc8575061232881115b15610bff576040517fa7149b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260208181526040918290208054608085811b6fffffffffffffffffffffffffffffffff83161790925583519181901c808352928201859052339382019390935284907faafe2470cbfb11a09f9b45d6a795226e93cc251e30fdcabddbabb157a1db53539060600161088b565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101869052600090610d2e9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d26919061318e565b87601a611a9f565b6064831080610d3e575061232883115b15610d75576040517fa7149b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60788463ffffffff161080610d9257506202a3008463ffffffff16115b15610dc9576040517fbbedb50a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631d831d5c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5a919061318e565b73ffffffffffffffffffffffffffffffffffffffff1663ea78803f886040518263ffffffff1660e01b8152600401610e9491815260200190565b602060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed5919061318e565b905073ffffffffffffffffffffffffffffffffffffffff8116610f24576040517fc0a8a55b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601610f85577f000000000000000000000000000000000000000000000000000000000000000092505b73ffffffffffffffffffffffffffffffffffffffff808416908216107f000000000000000000000000000000000000000000000000000000000000000081610fcd5784610fcf565b825b82610fda5783610fdc565b855b6040805173ffffffffffffffffffffffffffffffffffffffff9384166020820152929091169082015262ffffff89166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020918201206110d7939290917fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5491017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012060008b81526001845282812073ffffffffffffffffffffffffffffffffffffffff898116835294529190912054909450818516911603611179576040517f5f801a3e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600088815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855290835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116898416179091558c855284845282852063ffffffff8c1660808c901b8117909155600285528386208054909216928816929092179055815193845291830191909152339082015288907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce9060600160405180910390a26040805160008152602081018790523381830152905189917faafe2470cbfb11a09f9b45d6a795226e93cc251e30fdcabddbabb157a1db5353919081900360600190a26040805173ffffffffffffffffffffffffffffffffffffffff85811682523360208301528616918a917fe694de883385e30d535f625d68df4b2b5e866e8e86fe9d15554480c8d1812e60910160405180910390a3505095945050505050565b6040517f6e49181f000000000000000000000000000000000000000000000000000000008152602082013560048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636e49181f90604401602060405180830381865afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a0919061342b565b6113d6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080806113e96101c08601866131ab565b8101906113f69190613448565b9350935093509350600061140a86856120e9565b905084801561141857508181105b1561144f576040517f1d9e022400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061eeee611465610100890160e08a0161338f565b73ffffffffffffffffffffffffffffffffffffffff161461152657611491610100880160e0890161338f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611521919061348e565b611528565b475b90506000811561172d5761154b826101608a013561094160a08c0135600a613383565b905061eeee6115616101008a0160e08b0161338f565b73ffffffffffffffffffffffffffffffffffffffff16146116285761158d610100890160e08a0161338f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201526024810184905273ffffffffffffffffffffffffffffffffffffffff919091169063095ea7b3906044016020604051808303816000875af1158015611602573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611626919061342b565b505b600061eeee61163e6101008b0160e08c0161338f565b73ffffffffffffffffffffffffffffffffffffffff1614611660576000611662565b825b905033639e6eec058260208c01356116816101008e0160e08f0161338f565b876000604051806020016040528060008152506040518763ffffffff1660e01b81526004016116b49594939291906134a7565b6000604051808303818588803b1580156116cd57600080fd5b505af11580156116e1573d6000803e3d6000fd5b505060408051878152602080820188905233828401529151918e013594507faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e51693508190036060019150a2505b611746856101608a013561094160a08c0135600a613383565b6117509082613503565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663c7fb92de60208a013561179d8487613503565b6117af6101c08d016101a08e0161338f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915273ffffffffffffffffffffffffffffffffffffffff16604482015260a06064820152600060a48201526001608482015260c4016020604051808303816000875af115801561183d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611861919061348e565b505050505050505050565b60008061187b8385018561303d565b9092509050600073ffffffffffffffffffffffffffffffffffffffff821661eeee146118a757816118c9565b7f00000000000000000000000000000000000000000000000000000000000000005b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8581168552925290912054919250163314611936576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008088126119455787611947565b865b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601611a08577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119ee57600080fd5b505af1158015611a02573d6000803e3d6000fd5b50505050505b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff83169063a9059cbb906044016020604051808303816000875af1158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611861919061342b565b3373ffffffffffffffffffffffffffffffffffffffff84168114801590611b8957506040517fc161c93f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152858116602483015260448201859052606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063c161c93f90608401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b87919061342b565b155b8015611c5857506040517fc161c93f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152858116602483015260006044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063c161c93f90608401602060405180830381865afa158015611c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c56919061342b565b155b15611c8f576040517f075fd2b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600060606025835111611cba5750506040805160208101909152600080825290611e7c565b600083611cc960046020613503565b81518110611cd957611cd96133ee565b0160209081015160f81c91505b600085611cf4600484613503565b81518110611d0457611d046133ee565b01602001517fff000000000000000000000000000000000000000000000000000000000000001614801590611d425750611d3f602083613516565b81105b15611e7957600085611d55600484613503565b81518110611d6557611d656133ee565b016020908101518784019091015160f89190911c91507fffffffff0000000000000000000000000000000000000000000000000000000080891690821603611e6f576000611db4602086613516565b611dbf600986613503565b101580611e0c575087611dd3600986613503565b81518110611de357611de36133ee565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b611e4557602088611e1e600987613503565b81518110611e2e57611e2e6133ee565b0160200151611e40919060f81c613516565b611e48565b87515b90506001611e6189611e5b602087613516565b846123f7565b965096505050505050611e7c565b5050600501611ce6565b50505b9250929050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003611edb57838281611ed157611ed161352d565b0492505050611f92565b838110611f2a576040517f63a057780000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064015b60405180910390fd5b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff808616855292528083205481517f3850c7bd00000000000000000000000000000000000000000000000000000000815291519216918291633850c7bd9160048083019260e09291908290030181865afa92505050801561205a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526120579181019061356e565b60015b6120685760009150506120e1565b8061207e576000985050505050505050506120e1565b50505050505050600086815260208190526040812054908190608082901c906120a7858461243d565b5090506120b68189898c612701565b95506127106120c58388613516565b6120cf919061360d565b6120d990876133db565b955050505050505b949350505050565b60006101008301803590829061eeee906121069060e0880161338f565b73ffffffffffffffffffffffffffffffffffffffff161461213757612132610100860160e0870161338f565b612159565b7f00000000000000000000000000000000000000000000000000000000000000005b602080870135600090815260018252604080822073ffffffffffffffffffffffffffffffffffffffff80861684529352902054919250168063128acb0830871586896121b4576121af6401000276a36001613621565b6121d3565b6121d3600173fffd8963efd1fc6a506488495d951d5263988d26613655565b60208c01356121e96101008e0160e08f0161338f565b60405160200161221992919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612248959493929190613682565b60408051808303816000875af19250505080156122a0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261229d91810190613210565b60015b6122b057600093505050506106e5565b866122bb57806122bd565b815b6122c6906136c9565b6040517fa2d532e600000000000000000000000000000000000000000000000000000000815230600482015260208a013560248201526044810182905260806064820152600060848201529096507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063a2d532e6915060a401600060405180830381600087803b15801561237157600080fd5b505af1158015612385573d6000803e3d6000fd5b50506040805186815273ffffffffffffffffffffffffffffffffffffffff85166020828101919091529181018890523360608201529089013592507f6a212efdcd471836edcfe424121fc9048d3a7cd0458b1218a71aa915300e0e57915060800160405180910390a250505092915050565b60608282036040519150602081830101604052808252508260208501016020820160005b8481101561243357828101518282015260200161241b565b5050509392505050565b6000808263ffffffff166000036124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f42500000000000000000000000000000000000000000000000000000000000006044820152606401611f21565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106124e5576124e56133ee565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612514576125146133ee565b602002602001019063ffffffff16908163ffffffff16815250506000808673ffffffffffffffffffffffffffffffffffffffff1663883bdbfd846040518263ffffffff1660e01b815260040161256a9190613701565b600060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526125cd9190810190613836565b915091506000826000815181106125e6576125e66133ee565b602002602001015183600181518110612601576126016133ee565b60200260200101516126139190613902565b905060008260008151811061262a5761262a6133ee565b602002602001015183600181518110612645576126456133ee565b60200260200101516126579190613655565b905061266963ffffffff891683613947565b965060008260060b12801561268f575061268963ffffffff8916836139bb565b60060b15155b156126a2578661269e816139dd565b9750505b60006126c873ffffffffffffffffffffffffffffffffffffffff63ffffffff8b16613a3a565b90506126f277ffffffffffffffffffffffffffffffffffffffff00000000602084901b1682613a7d565b96505050505050509250929050565b60008061270d866128db565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff82161161280c57600061275e73ffffffffffffffffffffffffffffffffffffffff831680613516565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106127ce576127c97801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683612c42565b612804565b61280481876fffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000612c42565b9250506128d2565b600061283873ffffffffffffffffffffffffffffffffffffffff83168068010000000000000000612c42565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106128a05761289b700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683612c42565b6128ce565b6128ce81876fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612c42565b9250505b50949350505050565b60008060008360020b126128f2578260020b6128fa565b8260020b6000035b9050620d89e8811115612939576040517f2bc80f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160011660000361295d5770010000000000000000000000000000000061296f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156129a3576ffff97272373d413259a46990580e213a0260801c5b60048216156129c2576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156129e1576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612a00576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612a1f576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612a3e576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612a5d576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612a7d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612a9d576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612abd576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612add576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612afd576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612b1d576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612b3d576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612b5d576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612b7e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612b9e576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612bbd576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612bda576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612c1957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612c1557612c1561352d565b0490505b640100000000810615612c2d576001612c30565b60005b60ff16602082901c0192505050919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003612c995760008411612c8e57600080fd5b508290049050611f92565b808411612ca557600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600060208284031215612d2457600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611f9257600080fd5b803563ffffffff81168114612d6857600080fd5b919050565b60008060408385031215612d8057600080fd5b82359150612d9060208401612d54565b90509250929050565b600060208284031215612dab57600080fd5b5035919050565b600060208284031215612dc457600080fd5b813567ffffffffffffffff811115612ddb57600080fd5b82016101808185031215611f9257600080fd5b6000815180845260005b81811015612e1457602081850181015186830182015201612df8565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6000604080830185845260206040818601528186518084526060935060608701915060608160051b88010183890160005b83811015612efe578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff1684528681015187850152880151888401889052612eeb88850182612dee565b9587019593505090850190600101612e83565b50909a9950505050505050505050565b60008060408385031215612f2157600080fd5b50508035926020909101359150565b600060208284031215612f4257600080fd5b813567ffffffffffffffff811115612f5957600080fd5b82016101c08185031215611f9257600080fd5b6000604080830185845260206040818601528186518084526060935060608701915060608160051b88010183890160005b83811015612efe578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff168452868101518785015288015188840188905261300588850182612dee565b9587019593505090850190600101612f9d565b73ffffffffffffffffffffffffffffffffffffffff8116811461303a57600080fd5b50565b6000806040838503121561305057600080fd5b82359150602083013561306281613018565b809150509250929050565b600080600080600060a0868803121561308557600080fd5b85359450602086013562ffffff8116811461309f57600080fd5b93506130ad60408701612d54565b92506060860135915060808601356130c481613018565b809150509295509295909350565b6000602082840312156130e457600080fd5b813567ffffffffffffffff8111156130fb57600080fd5b82016102008185031215611f9257600080fd5b6000806000806060858703121561312457600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561314a57600080fd5b818701915087601f83011261315e57600080fd5b81358181111561316d57600080fd5b88602082850101111561317f57600080fd5b95989497505060200194505050565b6000602082840312156131a057600080fd5b8151611f9281613018565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131e057600080fd5b83018035915067ffffffffffffffff8211156131fb57600080fd5b602001915036819003821315611e7c57600080fd5b6000806040838503121561322357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156132bc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156132a2576132a2613234565b808516156132af57918102915b93841c9390800290613268565b509250929050565b6000826132d3575060016106e5565b816132e0575060006106e5565b81600181146132f657600281146133005761331c565b60019150506106e5565b60ff84111561331157613311613234565b50506001821b6106e5565b5060208310610133831016604e8410600b841016171561333f575081810a6106e5565b6133498383613263565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561337b5761337b613234565b029392505050565b6000611f9283836132c4565b6000602082840312156133a157600080fd5b8135611f9281613018565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b818103818111156106e5576106e5613234565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b801515811461303a57600080fd5b60006020828403121561343d57600080fd5b8151611f928161341d565b6000806000806080858703121561345e57600080fd5b84356134698161341d565b935060208501356134798161341d565b93969395505050506040820135916060013590565b6000602082840312156134a057600080fd5b5051919050565b85815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152821515606082015260c06080820152600060c082015260e060a082015260006134f860e0830184612dee565b979650505050505050565b808201808211156106e5576106e5613234565b80820281158282048414176106e5576106e5613234565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b805161ffff81168114612d6857600080fd5b600080600080600080600060e0888a03121561358957600080fd5b875161359481613018565b8097505060208801518060020b81146135ac57600080fd5b95506135ba6040890161355c565b94506135c86060890161355c565b93506135d66080890161355c565b925060a088015160ff811681146135ec57600080fd5b60c08901519092506135fd8161341d565b8091505092959891949750929550565b60008261361c5761361c61352d565b500490565b73ffffffffffffffffffffffffffffffffffffffff81811683821601908082111561364e5761364e613234565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908082111561364e5761364e613234565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526134f860a0830184612dee565b60007f800000000000000000000000000000000000000000000000000000000000000082036136fa576136fa613234565b5060000390565b6020808252825182820181905260009190848201906040850190845b8181101561373f57835163ffffffff168352928401929184019160010161371d565b50909695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613792576137926133ac565b604052919050565b600067ffffffffffffffff8211156137b4576137b46133ac565b5060051b60200190565b600082601f8301126137cf57600080fd5b815160206137e46137df8361379a565b61374b565b8083825260208201915060208460051b87010193508684111561380657600080fd5b602086015b8481101561382b57805161381e81613018565b835291830191830161380b565b509695505050505050565b6000806040838503121561384957600080fd5b825167ffffffffffffffff8082111561386157600080fd5b818501915085601f83011261387557600080fd5b815160206138856137df8361379a565b82815260059290921b840181019181810190898411156138a457600080fd5b948201945b838610156138d25785518060060b81146138c35760008081fd5b825294820194908201906138a9565b918801519196509093505050808211156138eb57600080fd5b506138f8858286016137be565b9150509250929050565b600682810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffff800000000000008112667fffffffffffff821317156106e5576106e5613234565b60008160060b8360060b8061395e5761395e61352d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000831416156139b2576139b2613234565b90059392505050565b60008260060b806139ce576139ce61352d565b808360060b0791505092915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103613a1257613a12613234565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116828216818102831692918115828504821417613a7457613a74613234565b50505092915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff80841680613aa857613aa861352d565b9216919091049291505056fea2646970667358221220fa8176add94916e93c2bc826fd6a057598458761f196a2a131c6579f277548f364736f6c63430008170033000000000000000000000000420000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000003465e29595f0e68dc341c8bfc6be1b43e0b4452b0000000000000000000000005b77e39c145ae9f9b9272fbd1f866226ae482432", - "nonce": "0x141", + "data": "0x6101406040523480156200001257600080fd5b5060405162003d8838038062003d88833981016040819052620000359162000156565b806001600160a01b031663f434c9146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009a9190620001be565b6001600160a01b039081166080528481166101205282811660c05281811660e081905290841660a0526040805163293c499960e01b8152905163293c4999916004808201926020929091908290030181865afa158015620000ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001259190620001be565b6001600160a01b03166101005250620001e592505050565b6001600160a01b03811681146200015357600080fd5b50565b600080600080608085870312156200016d57600080fd5b84516200017a816200013d565b60208601519094506200018d816200013d565b6040860151909350620001a0816200013d565b6060860151909250620001b3816200013d565b939692955090935050565b600060208284031215620001d157600080fd5b8151620001de816200013d565b9392505050565b60805160a05160c05160e0516101005161012051613aea6200029e60003960008181610487015281816109bd01528181610f63015281816118a90152818161198801526121390152600081816102840152818161071e01528181610b740152610cbb0152600081816104fd01528181610dcd01528181611769015261231601526000818161042301526113200152600081816105780152610fa301526000818161054401528181611b1c0152611beb0152613aea6000f3fe60806040526004361061018b5760003560e01c8063889eedb4116100d6578063db312fae1161007f578063f434c91411610059578063f434c91414610532578063f73e5aab14610566578063fa461e331461059a57600080fd5b8063db312fae146104d5578063ee0fc121146104eb578063f3c578811461051f57600080fd5b8063ad5c4648116100b0578063ad5c464814610475578063af471880146104a9578063b88a92b4146104be57600080fd5b8063889eedb4146103c357806388bc2ef3146104115780639c9d43611461044557600080fd5b80634c4ffc7111610138578063677ce08811610112578063677ce0881461036a578063754baf961461038d5780637b621d3a146103a357600080fd5b80634c4ffc71146102e857806355135de0146103165780635bf579a41461033657600080fd5b806327e514111161016957806327e514111461020a578063293c4999146102725780633717fba7146102a657600080fd5b806301ffc9a714610190578063132893eb146101c55780631a65893b146101e7575b600080fd5b34801561019c57600080fd5b506101b06101ab366004612d12565b6105ba565b60405190151581526020015b60405180910390f35b3480156101d157600080fd5b506101e56101e0366004612d6d565b6106eb565b005b3480156101f357600080fd5b506101fc607881565b6040519081526020016101bc565b34801561021657600080fd5b5061024d610225366004612d99565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b34801561027e57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b257600080fd5b506102d36102c1366004612d99565b60009081526020819052604090205490565b60405163ffffffff90911681526020016101bc565b3480156102f457600080fd5b50610308610303366004612db2565b610899565b6040516101bc929190612e52565b34801561032257600080fd5b506101e5610331366004612f0e565b610b41565b34801561034257600080fd5b5061035c610351366004612f30565b610100013590606090565b6040516101bc929190612f6c565b34801561037657600080fd5b506101b061038536600461303d565b600092915050565b34801561039957600080fd5b506101fc61232881565b3480156103af57600080fd5b5061024d6103be36600461306d565b610c70565b3480156103cf57600080fd5b5061024d6103de36600461303d565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561041d57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561045157600080fd5b506101fc610460366004612d99565b60009081526020819052604090205460801c90565b34801561048157600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b557600080fd5b506101fc606481565b3480156104ca57600080fd5b506101fc6202a30081565b3480156104e157600080fd5b506101fc61271081565b3480156104f757600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b6101e561052d3660046130d2565b6112e8565b34801561053e57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057257600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a657600080fd5b506101e56105b536600461310e565b61186c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f70c6655d00000000000000000000000000000000000000000000000000000000148061064d57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3c5788100000000000000000000000000000000000000000000000000000000145b8061069957507fffffffff0000000000000000000000000000000000000000000000000000000082167f8f97abcd00000000000000000000000000000000000000000000000000000000145b806106e557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018390526107a7907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e906024015b602060405180830381865afa15801561077b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079f919061318e565b836019611a9f565b60788163ffffffff1610806107c457506202a3008163ffffffff16115b156107fb576040517fbbedb50a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604091829020805463ffffffff85167fffffffffffffffffffffffffffffffff000000000000000000000000000000008216811790925583516fffffffffffffffffffffffffffffffff821680825293810192909252339382019390935284907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce906060015b60405180910390a250505050565b610120810135606082810135600080808430811b6108f9816108bf6101608c018c6131ab565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c9592505050565b9093509150821561091d57818060200190518101906109189190613210565b955093505b50508160000361092b578391505b6000610946838861094160808c0135600a613383565b611e83565b60c08901356000908152600260205260408082205492935073ffffffffffffffffffffffffffffffffffffffff9092169161eeee9061098b9060608d01908d0161338f565b73ffffffffffffffffffffffffffffffffffffffff16146109bb576109b660608b0160408c0161338f565b6109dd565b7f00000000000000000000000000000000000000000000000000000000000000005b9050856000036109fa576109f78a60c00135838784611f99565b95505b85831015610b355786851115610a3c576040517f1f89071e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051600180825281830190925273ffffffffffffffffffffffffffffffffffffffff8381169085161091816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081610a6d5750506040805160608101825230815260208101899052919a50810186838b8a14610acc57610ac78a8d6133db565b610acf565b60005b604080519315156020850152911515918301919091526060820152608081018a905260a00160405160208183030381529060405281525089600081518110610b1957610b196133ee565b6020026020010181905250600099505050505050505050915091565b50505050505050915091565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101839052610bb8907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e9060240161075e565b6064811080610bc8575061232881115b15610bff576040517fa7149b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260208181526040918290208054608085811b6fffffffffffffffffffffffffffffffff83161790925583519181901c808352928201859052339382019390935284907faafe2470cbfb11a09f9b45d6a795226e93cc251e30fdcabddbabb157a1db53539060600161088b565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101869052600090610d2e9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d26919061318e565b87601a611a9f565b6064831080610d3e575061232883115b15610d75576040517fa7149b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60788463ffffffff161080610d9257506202a3008463ffffffff16115b15610dc9576040517fbbedb50a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631d831d5c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5a919061318e565b73ffffffffffffffffffffffffffffffffffffffff1663ea78803f886040518263ffffffff1660e01b8152600401610e9491815260200190565b602060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed5919061318e565b905073ffffffffffffffffffffffffffffffffffffffff8116610f24576040517fc0a8a55b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601610f85577f000000000000000000000000000000000000000000000000000000000000000092505b73ffffffffffffffffffffffffffffffffffffffff808416908216107f000000000000000000000000000000000000000000000000000000000000000081610fcd5784610fcf565b825b82610fda5783610fdc565b855b6040805173ffffffffffffffffffffffffffffffffffffffff9384166020820152929091169082015262ffffff89166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020918201206110d7939290917fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5491017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012060008b81526001845282812073ffffffffffffffffffffffffffffffffffffffff898116835294529190912054909450818516911603611179576040517f5f801a3e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600088815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855290835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116898416179091558c855284845282852063ffffffff8c1660808c901b8117909155600285528386208054909216928816929092179055815193845291830191909152339082015288907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce9060600160405180910390a26040805160008152602081018790523381830152905189917faafe2470cbfb11a09f9b45d6a795226e93cc251e30fdcabddbabb157a1db5353919081900360600190a26040805173ffffffffffffffffffffffffffffffffffffffff85811682523360208301528616918a917fe694de883385e30d535f625d68df4b2b5e866e8e86fe9d15554480c8d1812e60910160405180910390a3505095945050505050565b6040517f6e49181f000000000000000000000000000000000000000000000000000000008152602082013560048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636e49181f90604401602060405180830381865afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a0919061342b565b6113d6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080806113e96101c08601866131ab565b8101906113f69190613448565b9350935093509350600061140a86856120e9565b905084801561141857508181105b1561144f576040517f1d9e022400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061eeee611465610100890160e08a0161338f565b73ffffffffffffffffffffffffffffffffffffffff161461152657611491610100880160e0890161338f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611521919061348e565b611528565b475b90506000811561172d5761154b826101608a013561094160a08c0135600a613383565b905061eeee6115616101008a0160e08b0161338f565b73ffffffffffffffffffffffffffffffffffffffff16146116285761158d610100890160e08a0161338f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201526024810184905273ffffffffffffffffffffffffffffffffffffffff919091169063095ea7b3906044016020604051808303816000875af1158015611602573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611626919061342b565b505b600061eeee61163e6101008b0160e08c0161338f565b73ffffffffffffffffffffffffffffffffffffffff1614611660576000611662565b825b905033639e6eec058260208c01356116816101008e0160e08f0161338f565b876000604051806020016040528060008152506040518763ffffffff1660e01b81526004016116b49594939291906134a7565b6000604051808303818588803b1580156116cd57600080fd5b505af11580156116e1573d6000803e3d6000fd5b505060408051878152602080820188905233828401529151918e013594507faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e51693508190036060019150a2505b611746856101608a013561094160a08c0135600a613383565b6117509082613503565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663c7fb92de60208a013561179d8487613503565b6117af6101c08d016101a08e0161338f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915273ffffffffffffffffffffffffffffffffffffffff16604482015260a06064820152600060a48201526001608482015260c4016020604051808303816000875af115801561183d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611861919061348e565b505050505050505050565b60008061187b8385018561303d565b9092509050600073ffffffffffffffffffffffffffffffffffffffff821661eeee146118a757816118c9565b7f00000000000000000000000000000000000000000000000000000000000000005b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8581168552925290912054919250163314611936576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008088126119455787611947565b865b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601611a08577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119ee57600080fd5b505af1158015611a02573d6000803e3d6000fd5b50505050505b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff83169063a9059cbb906044016020604051808303816000875af1158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611861919061342b565b3373ffffffffffffffffffffffffffffffffffffffff84168114801590611b8957506040517fc161c93f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152858116602483015260448201859052606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063c161c93f90608401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b87919061342b565b155b8015611c5857506040517fc161c93f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152858116602483015260006044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063c161c93f90608401602060405180830381865afa158015611c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c56919061342b565b155b15611c8f576040517f075fd2b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600060606025835111611cba5750506040805160208101909152600080825290611e7c565b600083611cc960046020613503565b81518110611cd957611cd96133ee565b0160209081015160f81c91505b600085611cf4600484613503565b81518110611d0457611d046133ee565b01602001517fff000000000000000000000000000000000000000000000000000000000000001614801590611d425750611d3f602083613516565b81105b15611e7957600085611d55600484613503565b81518110611d6557611d656133ee565b016020908101518784019091015160f89190911c91507fffffffff0000000000000000000000000000000000000000000000000000000080891690821603611e6f576000611db4602086613516565b611dbf600986613503565b101580611e0c575087611dd3600986613503565b81518110611de357611de36133ee565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b611e4557602088611e1e600987613503565b81518110611e2e57611e2e6133ee565b0160200151611e40919060f81c613516565b611e48565b87515b90506001611e6189611e5b602087613516565b846123f7565b965096505050505050611e7c565b5050600501611ce6565b50505b9250929050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003611edb57838281611ed157611ed161352d565b0492505050611f92565b838110611f2a576040517f63a057780000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064015b60405180910390fd5b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff808616855292528083205481517f3850c7bd00000000000000000000000000000000000000000000000000000000815291519216918291633850c7bd9160048083019260e09291908290030181865afa92505050801561205a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526120579181019061356e565b60015b6120685760009150506120e1565b8061207e576000985050505050505050506120e1565b50505050505050600086815260208190526040812054908190608082901c906120a7858461243d565b5090506120b68189898c612701565b95506127106120c58388613516565b6120cf919061360d565b6120d990876133db565b955050505050505b949350505050565b60006101008301803590829061eeee906121069060e0880161338f565b73ffffffffffffffffffffffffffffffffffffffff161461213757612132610100860160e0870161338f565b612159565b7f00000000000000000000000000000000000000000000000000000000000000005b602080870135600090815260018252604080822073ffffffffffffffffffffffffffffffffffffffff80861684529352902054919250168063128acb0830871586896121b4576121af6401000276a36001613621565b6121d3565b6121d3600173fffd8963efd1fc6a506488495d951d5263988d26613655565b60208c01356121e96101008e0160e08f0161338f565b60405160200161221992919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612248959493929190613682565b60408051808303816000875af19250505080156122a0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261229d91810190613210565b60015b6122b057600093505050506106e5565b866122bb57806122bd565b815b6122c6906136c9565b6040517fa2d532e600000000000000000000000000000000000000000000000000000000815230600482015260208a013560248201526044810182905260806064820152600060848201529096507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063a2d532e6915060a401600060405180830381600087803b15801561237157600080fd5b505af1158015612385573d6000803e3d6000fd5b50506040805186815273ffffffffffffffffffffffffffffffffffffffff85166020828101919091529181018890523360608201529089013592507f6a212efdcd471836edcfe424121fc9048d3a7cd0458b1218a71aa915300e0e57915060800160405180910390a250505092915050565b60608282036040519150602081830101604052808252508260208501016020820160005b8481101561243357828101518282015260200161241b565b5050509392505050565b6000808263ffffffff166000036124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f42500000000000000000000000000000000000000000000000000000000000006044820152606401611f21565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106124e5576124e56133ee565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612514576125146133ee565b602002602001019063ffffffff16908163ffffffff16815250506000808673ffffffffffffffffffffffffffffffffffffffff1663883bdbfd846040518263ffffffff1660e01b815260040161256a9190613701565b600060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526125cd9190810190613836565b915091506000826000815181106125e6576125e66133ee565b602002602001015183600181518110612601576126016133ee565b60200260200101516126139190613902565b905060008260008151811061262a5761262a6133ee565b602002602001015183600181518110612645576126456133ee565b60200260200101516126579190613655565b905061266963ffffffff891683613947565b965060008260060b12801561268f575061268963ffffffff8916836139bb565b60060b15155b156126a2578661269e816139dd565b9750505b60006126c873ffffffffffffffffffffffffffffffffffffffff63ffffffff8b16613a3a565b90506126f277ffffffffffffffffffffffffffffffffffffffff00000000602084901b1682613a7d565b96505050505050509250929050565b60008061270d866128db565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff82161161280c57600061275e73ffffffffffffffffffffffffffffffffffffffff831680613516565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106127ce576127c97801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683612c42565b612804565b61280481876fffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000612c42565b9250506128d2565b600061283873ffffffffffffffffffffffffffffffffffffffff83168068010000000000000000612c42565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106128a05761289b700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683612c42565b6128ce565b6128ce81876fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612c42565b9250505b50949350505050565b60008060008360020b126128f2578260020b6128fa565b8260020b6000035b9050620d89e8811115612939576040517f2bc80f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160011660000361295d5770010000000000000000000000000000000061296f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156129a3576ffff97272373d413259a46990580e213a0260801c5b60048216156129c2576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156129e1576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612a00576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612a1f576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612a3e576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612a5d576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612a7d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612a9d576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612abd576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612add576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612afd576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612b1d576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612b3d576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612b5d576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612b7e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612b9e576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612bbd576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612bda576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612c1957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612c1557612c1561352d565b0490505b640100000000810615612c2d576001612c30565b60005b60ff16602082901c0192505050919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003612c995760008411612c8e57600080fd5b508290049050611f92565b808411612ca557600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600060208284031215612d2457600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611f9257600080fd5b803563ffffffff81168114612d6857600080fd5b919050565b60008060408385031215612d8057600080fd5b82359150612d9060208401612d54565b90509250929050565b600060208284031215612dab57600080fd5b5035919050565b600060208284031215612dc457600080fd5b813567ffffffffffffffff811115612ddb57600080fd5b82016101808185031215611f9257600080fd5b6000815180845260005b81811015612e1457602081850181015186830182015201612df8565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6000604080830185845260206040818601528186518084526060935060608701915060608160051b88010183890160005b83811015612efe578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff1684528681015187850152880151888401889052612eeb88850182612dee565b9587019593505090850190600101612e83565b50909a9950505050505050505050565b60008060408385031215612f2157600080fd5b50508035926020909101359150565b600060208284031215612f4257600080fd5b813567ffffffffffffffff811115612f5957600080fd5b82016101c08185031215611f9257600080fd5b6000604080830185845260206040818601528186518084526060935060608701915060608160051b88010183890160005b83811015612efe578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff168452868101518785015288015188840188905261300588850182612dee565b9587019593505090850190600101612f9d565b73ffffffffffffffffffffffffffffffffffffffff8116811461303a57600080fd5b50565b6000806040838503121561305057600080fd5b82359150602083013561306281613018565b809150509250929050565b600080600080600060a0868803121561308557600080fd5b85359450602086013562ffffff8116811461309f57600080fd5b93506130ad60408701612d54565b92506060860135915060808601356130c481613018565b809150509295509295909350565b6000602082840312156130e457600080fd5b813567ffffffffffffffff8111156130fb57600080fd5b82016102008185031215611f9257600080fd5b6000806000806060858703121561312457600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561314a57600080fd5b818701915087601f83011261315e57600080fd5b81358181111561316d57600080fd5b88602082850101111561317f57600080fd5b95989497505060200194505050565b6000602082840312156131a057600080fd5b8151611f9281613018565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131e057600080fd5b83018035915067ffffffffffffffff8211156131fb57600080fd5b602001915036819003821315611e7c57600080fd5b6000806040838503121561322357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156132bc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156132a2576132a2613234565b808516156132af57918102915b93841c9390800290613268565b509250929050565b6000826132d3575060016106e5565b816132e0575060006106e5565b81600181146132f657600281146133005761331c565b60019150506106e5565b60ff84111561331157613311613234565b50506001821b6106e5565b5060208310610133831016604e8410600b841016171561333f575081810a6106e5565b6133498383613263565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561337b5761337b613234565b029392505050565b6000611f9283836132c4565b6000602082840312156133a157600080fd5b8135611f9281613018565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b818103818111156106e5576106e5613234565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b801515811461303a57600080fd5b60006020828403121561343d57600080fd5b8151611f928161341d565b6000806000806080858703121561345e57600080fd5b84356134698161341d565b935060208501356134798161341d565b93969395505050506040820135916060013590565b6000602082840312156134a057600080fd5b5051919050565b85815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152821515606082015260c06080820152600060c082015260e060a082015260006134f860e0830184612dee565b979650505050505050565b808201808211156106e5576106e5613234565b80820281158282048414176106e5576106e5613234565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b805161ffff81168114612d6857600080fd5b600080600080600080600060e0888a03121561358957600080fd5b875161359481613018565b8097505060208801518060020b81146135ac57600080fd5b95506135ba6040890161355c565b94506135c86060890161355c565b93506135d66080890161355c565b925060a088015160ff811681146135ec57600080fd5b60c08901519092506135fd8161341d565b8091505092959891949750929550565b60008261361c5761361c61352d565b500490565b73ffffffffffffffffffffffffffffffffffffffff81811683821601908082111561364e5761364e613234565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908082111561364e5761364e613234565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526134f860a0830184612dee565b60007f800000000000000000000000000000000000000000000000000000000000000082036136fa576136fa613234565b5060000390565b6020808252825182820181905260009190848201906040850190845b8181101561373f57835163ffffffff168352928401929184019160010161371d565b50909695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613792576137926133ac565b604052919050565b600067ffffffffffffffff8211156137b4576137b46133ac565b5060051b60200190565b600082601f8301126137cf57600080fd5b815160206137e46137df8361379a565b61374b565b8083825260208201915060208460051b87010193508684111561380657600080fd5b602086015b8481101561382b57805161381e81613018565b835291830191830161380b565b509695505050505050565b6000806040838503121561384957600080fd5b825167ffffffffffffffff8082111561386157600080fd5b818501915085601f83011261387557600080fd5b815160206138856137df8361379a565b82815260059290921b840181019181810190898411156138a457600080fd5b948201945b838610156138d25785518060060b81146138c35760008081fd5b825294820194908201906138a9565b918801519196509093505050808211156138eb57600080fd5b506138f8858286016137be565b9150509250929050565b600682810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffff800000000000008112667fffffffffffff821317156106e5576106e5613234565b60008160060b8360060b8061395e5761395e61352d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000831416156139b2576139b2613234565b90059392505050565b60008260060b806139ce576139ce61352d565b808360060b0791505092915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103613a1257613a12613234565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116828216818102831692918115828504821417613a7457613a74613234565b50505092915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff80841680613aa857613aa861352d565b9216919091049291505056fea2646970667358221220bb101682cd16df02b1a9196c3bed9d0d7a16bd5b3b75c3d782fae0f8e8e8aa2264736f6c6343000817003300000000000000000000000042000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cd62d579077ba9b37052527abb4cb6cbe349faba000000000000000000000000fb74d49104a97ded6730a3a3a40d4ffee55decc7", + "nonce": "0x169", "accessList": [] }, "additionalContracts": [], @@ -27,15 +27,15 @@ ], "receipts": [ { - "transactionHash": "0x40b1c734310754e21c0bfd2e8e52c8d0b8eb9d8051d6742e209b7e7073c408e7", + "transactionHash": "0x15f02e95ced8b974088157f230c4287f1de16d6824c10c9b28a8b0b5c71f49ea", "transactionIndex": "0x1", - "blockHash": "0xead8c308d2a0a49bbdc40c2e01b28162bfea3d176b726e1b5e93182e370968c2", - "blockNumber": "0x748143", + "blockHash": "0x29d41eae1c2adb5cfc32a29d2602fbd82eaa37beea8377f3eaa6d2737d8d8a41", + "blockNumber": "0x79fa31", "from": "0x9C382eEC918e14F4943912F07661D1de286c79ad", "to": null, "cumulativeGasUsed": "0x3327a1", "gasUsed": "0x326268", - "contractAddress": "0x6A9E7C0D8f076839D2aFeb213A98A61Ff74763dB", + "contractAddress": "0x89fA1ab941aB8aB0e9367c0D18260e2D09543611", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", @@ -46,8 +46,8 @@ "libraries": [], "pending": [], "returns": {}, - "timestamp": 1707073092, + "timestamp": 1707790366, "chain": 11155420, "multi": false, - "commit": "c552395" + "commit": "683b218" } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ff9a6a8..7ee88a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "@bananapus/buyback-hook", - "version": "0.0.1", + "version": "0.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bananapus/buyback-hook", - "version": "0.0.1", + "version": "0.0.2", "license": "MIT", "dependencies": { - "@bananapus/core": "^0.0.4", + "@bananapus/core": "^0.0.5", "@bananapus/permission-ids": "^0.0.2", "@exhausted-pigeon/uniswap-v3-forge-quoter": "^1.0.1", "@openzeppelin/contracts": "^5.0.1", @@ -18,9 +18,9 @@ } }, "node_modules/@bananapus/core": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@bananapus/core/-/core-0.0.4.tgz", - "integrity": "sha512-DjY36kzfka3cSJcvQ103lZPp/BCuQgJMnMxzJLfTTQOtr3+oLNFNMbw3//v/Kvstj6nfvwFX5lLhSeCEcPisbw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@bananapus/core/-/core-0.0.5.tgz", + "integrity": "sha512-1mC7ceaWrHgpMb6PhVtJ8aKpSsunQUwrijnfCLtPMoVfQePVJppcRbATOTjVZx5TMYSzU1V5fpGe8cIK1jbkEQ==", "dependencies": { "@bananapus/permission-ids": "^0.0.2", "@chainlink/contracts": "^0.8.0", @@ -50,32 +50,6 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz", "integrity": "sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==" }, - "node_modules/@chainsafe/as-sha256": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", - "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", - "peer": true - }, - "node_modules/@chainsafe/persistent-merkle-tree": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", - "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", - "peer": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "node_modules/@chainsafe/ssz": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", - "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", - "peer": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.4.2", - "case": "^1.6.3" - } - }, "node_modules/@eth-optimism/contracts": { "version": "0.5.40", "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.40.tgz", @@ -791,9 +765,10 @@ } }, "node_modules/@exhausted-pigeon/uniswap-v3-forge-quoter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@exhausted-pigeon/uniswap-v3-forge-quoter/-/uniswap-v3-forge-quoter-1.0.1.tgz", - "integrity": "sha512-UAvus9NE6ophIKKGa1v07s9f9+Pa+CkOqLuILBLc88AW3huvrAmK1NzvJyl/LEqORrzRWK2czjSnrfiVCwkzHA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@exhausted-pigeon/uniswap-v3-forge-quoter/-/uniswap-v3-forge-quoter-1.0.2.tgz", + "integrity": "sha512-EbAZJLm9/ZiI2WkbHH+LCxYUzqvtFVjD0rWwkTW/RXXcy562U6TdhPcYPZrh+brPx6oYyKyk1+1F+iKtkbwtEA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dependencies": { "@uniswap/v3-core": "^1.0.2-solc-0.8-simulate" } @@ -848,21 +823,20 @@ "peer": true }, "node_modules/@nomicfoundation/ethereumjs-block": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", - "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.4.tgz", + "integrity": "sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw==", "peer": true, "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1" + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "ethereum-cryptography": "0.1.3" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethereum-cryptography": { @@ -889,27 +863,24 @@ } }, "node_modules/@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", - "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", - "peer": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-ethash": "3.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "abstract-level": "^1.0.3", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.4.tgz", + "integrity": "sha512-jYsd/kwzbmpnxx86tXsYV8wZ5xGvFL+7/P0c6OlzpClHsbFzeF41KrYA9scON8Rg6bZu3ZTv6JOAgj3t7USUfg==", + "peer": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.4", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-ethash": "3.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", "debug": "^4.3.3", "ethereum-cryptography": "0.1.3", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" + "lru-cache": "^10.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/ethereum-cryptography": { @@ -936,30 +907,28 @@ } }, "node_modules/@nomicfoundation/ethereumjs-common": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", - "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", "peer": true, "dependencies": { - "@nomicfoundation/ethereumjs-util": "9.0.2", - "crc-32": "^1.2.0" + "@nomicfoundation/ethereumjs-util": "9.0.4" } }, "node_modules/@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", - "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.4.tgz", + "integrity": "sha512-xvIrwIMl9sSaiYKRem68+O7vYdj7Q2XWv5P7JXiIkn83918QzWHvqbswTRsH7+r6X1UEvdsURRnZbvZszEjAaQ==", "peer": true, "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.0.23", + "@nomicfoundation/ethereumjs-block": "5.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "bigint-crypto-utils": "^3.2.2", "ethereum-cryptography": "0.1.3" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@nomicfoundation/ethereumjs-ethash/node_modules/ethereum-cryptography": { @@ -986,22 +955,22 @@ } }, "node_modules/@nomicfoundation/ethereumjs-evm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", - "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.4.tgz", + "integrity": "sha512-lTyZZi1KpeMHzaO6cSVisR2tjiTTedjo7PcmhI/+GNFo9BmyY6QYzGeSti0sFttmjbEMioHgXxl5yrLNRg6+1w==", "peer": true, "dependencies": { - "@ethersproject/providers": "^5.7.1", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-statemanager": "2.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@types/debug": "^4.1.9", "debug": "^4.3.3", "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" + "rustbn-wasm": "^0.2.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@nomicfoundation/ethereumjs-evm/node_modules/ethereum-cryptography": { @@ -1028,29 +997,39 @@ } }, "node_modules/@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", - "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", "peer": true, "bin": { - "rlp": "bin/rlp" + "rlp": "bin/rlp.cjs" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", - "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.4.tgz", + "integrity": "sha512-HPDjeFrxw6llEi+BzqXkZ+KkvFnTOPczuHBtk21hRlDiuKuZz32dPzlhpRsDBGV1b5JTmRDUVqCS1lp3Gghw4Q==", "peer": true, "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", "debug": "^4.3.3", "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1", - "js-sdsl": "^4.1.4" + "js-sdsl": "^4.1.4", + "lru-cache": "^10.0.0" + }, + "peerDependencies": { + "@nomicfoundation/ethereumjs-verkle": "0.0.2" + }, + "peerDependenciesMeta": { + "@nomicfoundation/ethereumjs-verkle": { + "optional": true + } } }, "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethereum-cryptography": { @@ -1077,19 +1056,20 @@ } }, "node_modules/@nomicfoundation/ethereumjs-trie": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", - "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.4.tgz", + "integrity": "sha512-3nSwQiFMvr2VFe/aZUyinuohYvtytUqZCUCvIWcPJ/BwJH6oQdZRB42aNFBJ/8nAh2s3OcroWpBLskzW01mFKA==", "peer": true, "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", "@types/readable-stream": "^2.3.13", "ethereum-cryptography": "0.1.3", + "lru-cache": "^10.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/ethereum-cryptography": { @@ -1116,20 +1096,26 @@ } }, "node_modules/@nomicfoundation/ethereumjs-tx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", - "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", + "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", "peer": true, "dependencies": { - "@chainsafe/ssz": "^0.9.2", - "@ethersproject/providers": "^5.7.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", "ethereum-cryptography": "0.1.3" }, "engines": { - "node": ">=14" + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } } }, "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { @@ -1156,36 +1142,24 @@ } }, "node_modules/@nomicfoundation/ethereumjs-util": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", - "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", + "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", "peer": true, "dependencies": { - "@chainsafe/ssz": "^0.10.0", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", "ethereum-cryptography": "0.1.3" }, "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", - "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", - "peer": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", - "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", - "peer": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.5.0" + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } } }, "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { @@ -1211,28 +1185,41 @@ "setimmediate": "^1.0.5" } }, + "node_modules/@nomicfoundation/ethereumjs-verkle": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-verkle/-/ethereumjs-verkle-0.0.2.tgz", + "integrity": "sha512-bjnfZElpYGK/XuuVRmLS3yDvr+cDs85D9oonZ0YUa5A3lgFgokWMp76zXrxX2jVQ0BfHaw12y860n1+iOi6yFQ==", + "peer": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "lru-cache": "^10.0.0", + "rust-verkle-wasm": "^0.0.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@nomicfoundation/ethereumjs-vm": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", - "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", - "peer": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-blockchain": "7.0.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-evm": "2.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-statemanager": "2.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.4.tgz", + "integrity": "sha512-gsA4IhmtWHI4BofKy3kio9W+dqZQs5Ji5mLjLYxHCkat+JQBUt5szjRKra2F9nGDJ2XcI/wWb0YWUFNgln4zRQ==", + "peer": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.4", + "@nomicfoundation/ethereumjs-blockchain": "7.0.4", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-evm": "2.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-statemanager": "2.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" + "ethereum-cryptography": "0.1.3" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@nomicfoundation/ethereumjs-vm/node_modules/ethereum-cryptography": { @@ -1614,16 +1601,31 @@ "@types/node": "*" } }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "peer": true, + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", "peer": true }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "peer": true + }, "node_modules/@types/node": { - "version": "20.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz", - "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==", + "version": "20.11.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz", + "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==", "peer": true, "dependencies": { "undici-types": "~5.26.4" @@ -1698,24 +1700,6 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.6.0.tgz", "integrity": "sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg==" }, - "node_modules/abstract-level": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz", - "integrity": "sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==", - "peer": true, - "dependencies": { - "buffer": "^6.0.3", - "catering": "^2.1.0", - "is-buffer": "^2.0.5", - "level-supports": "^4.0.0", - "level-transcoder": "^1.0.1", - "module-error": "^1.0.1", - "queue-microtask": "^1.2.3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/adm-zip": { "version": "0.4.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", @@ -1851,26 +1835,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, "node_modules/base64-sol": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/base64-sol/-/base64-sol-1.1.0.tgz", @@ -2039,18 +2003,6 @@ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, - "node_modules/browser-level": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", - "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", - "peer": true, - "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.1", - "module-error": "^1.0.2", - "run-parallel-limit": "^1.1.0" - } - }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -2091,30 +2043,6 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2156,24 +2084,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/case": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", - "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/catering": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", - "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/chai": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", @@ -2255,23 +2165,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/classic-level": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz", - "integrity": "sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==", - "hasInstallScript": true, - "peer": true, - "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.0", - "module-error": "^1.0.1", - "napi-macros": "^2.2.2", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -2346,18 +2239,6 @@ "node": ">= 0.6" } }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "peer": true, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -2752,12 +2633,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "peer": true - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -2813,23 +2688,24 @@ "peer": true }, "node_modules/hardhat": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.5.tgz", - "integrity": "sha512-vx8R7zWCYVgM56vA6o0Wqx2bIIptkN4TMs9QwDqZVNGRhMzBfzqUeEYbp+69gxWp1neg2V2nYQUaaUv7aom1kw==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.20.1.tgz", + "integrity": "sha512-q75xDQiQtCZcTMBwjTovrXEU5ECr49baxr4/OBkIu/ULTPzlB20yk1dRWNmD2IFbAeAeXggaWvQAdpiScaHtPw==", "peer": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.2", - "@nomicfoundation/ethereumjs-blockchain": "7.0.2", - "@nomicfoundation/ethereumjs-common": "4.0.2", - "@nomicfoundation/ethereumjs-evm": "2.0.2", - "@nomicfoundation/ethereumjs-rlp": "5.0.2", - "@nomicfoundation/ethereumjs-statemanager": "2.0.2", - "@nomicfoundation/ethereumjs-trie": "6.0.2", - "@nomicfoundation/ethereumjs-tx": "5.0.2", - "@nomicfoundation/ethereumjs-util": "9.0.2", - "@nomicfoundation/ethereumjs-vm": "7.0.2", + "@nomicfoundation/ethereumjs-block": "5.0.4", + "@nomicfoundation/ethereumjs-blockchain": "7.0.4", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-evm": "2.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-statemanager": "2.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@nomicfoundation/ethereumjs-verkle": "0.0.2", + "@nomicfoundation/ethereumjs-vm": "7.0.4", "@nomicfoundation/solidity-analyzer": "^0.1.0", "@sentry/node": "^5.18.1", "@types/bn.js": "^5.1.0", @@ -3007,26 +2883,6 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, "node_modules/immutable": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", @@ -3077,29 +2933,6 @@ "node": ">=8" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3227,46 +3060,6 @@ "graceful-fs": "^4.1.9" } }, - "node_modules/level": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/level/-/level-8.0.1.tgz", - "integrity": "sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ==", - "peer": true, - "dependencies": { - "abstract-level": "^1.0.4", - "browser-level": "^1.0.1", - "classic-level": "^1.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/level" - } - }, - "node_modules/level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "peer": true, - "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -3387,21 +3180,12 @@ "peer": true }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "peer": true, "engines": { - "node": ">=8.9.0" + "node": "14 || >=16.14" } }, "node_modules/md5.js": { @@ -3415,20 +3199,6 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/memory-level": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", - "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", - "peer": true, - "dependencies": { - "abstract-level": "^1.0.0", - "functional-red-black-tree": "^1.0.1", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -3692,27 +3462,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "peer": true }, - "node_modules/napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "peer": true - }, "node_modules/node-addon-api": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", @@ -3869,26 +3624,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -4002,35 +3737,21 @@ "rlp": "bin/rlp" } }, - "node_modules/run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/rust-verkle-wasm": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/rust-verkle-wasm/-/rust-verkle-wasm-0.0.1.tgz", + "integrity": "sha512-BN6fiTsxcd2dCECz/cHtGTt9cdLJR925nh7iAuRcj8ymKw7OOaPmCneQZ7JePOJ/ia27TjEL91VdOi88Yf+mcA==", + "peer": true + }, + "node_modules/rustbn-wasm": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn-wasm/-/rustbn-wasm-0.2.0.tgz", + "integrity": "sha512-FThvYFNTqrEKGqXuseeg0zR7yROh/6U1617mCHF68OVqrN1tNKRN7Tdwy4WayPVsCmmK+eMxtIZX1qL6JxTkMg==", "peer": true, "dependencies": { - "queue-microtask": "^1.2.2" + "@scure/base": "^1.1.1" } }, - "node_modules/rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "peer": true - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -4532,12 +4253,6 @@ "node": ">=10" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "peer": true - }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -4593,4 +4308,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 6390fdf..0487a28 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,11 @@ "deploy:optimism-sepolia": "source .env && forge script Deploy --chain-id 11155420 --rpc-url $RPC_OPTIMISM_SEPOLIA --broadcast --verify --etherscan-api-key $OPTIMISTIC_ETHERSCAN_API_KEY --interactives 1 --sender $SENDER_OPTIMISM_SEPOLIA -vvv" }, "dependencies": { - "@bananapus/core": "^0.0.4", + "@bananapus/core": "^0.0.5", "@bananapus/permission-ids": "^0.0.2", "@exhausted-pigeon/uniswap-v3-forge-quoter": "^1.0.1", "@openzeppelin/contracts": "^5.0.1", "@uniswap/v3-core": "1.0.2-solc-0.8-simulate", "@uniswap/v3-periphery": "github:uniswap/v3-periphery#0.8" } -} +} \ No newline at end of file diff --git a/src/JBBuybackHook.sol b/src/JBBuybackHook.sol index 4438424..d5df97e 100644 --- a/src/JBBuybackHook.sol +++ b/src/JBBuybackHook.sol @@ -248,9 +248,9 @@ contract JBBuybackHook is ERC165, JBPermissioned, IJBBuybackHook { external pure override - returns (uint256, JBRedeemHookSpecification[] memory hookSpecifications) + returns (uint256, uint256, uint256, JBRedeemHookSpecification[] memory hookSpecifications) { - return (context.reclaimAmount.value, hookSpecifications); + return (context.redemptionRate, context.redeemCount, context.totalSupply, hookSpecifications); } //*********************************************************************// diff --git a/test/Unit.t.sol b/test/Unit.t.sol index 77ac22d..7b2db59 100644 --- a/test/Unit.t.sol +++ b/test/Unit.t.sol @@ -1553,27 +1553,38 @@ contract Test_BuybackHook_Unit is Test { } /// @notice Test whether redemption functionality is left unchanged by the hook. - function test_beforeRedeemRecordedWith_unchangedRedeem(uint256 amountIn) public { + function test_beforeRedeemRecordedWith_unchangedRedeem( + uint256 redemptionRateIn, + uint256 redeemCountIn, + uint256 totalSupplyIn + ) + public + { // Set up basic redemption context. JBBeforeRedeemRecordedContext memory beforeRedeemRecordedContext = JBBeforeRedeemRecordedContext({ terminal: makeAddr("terminal"), holder: makeAddr("hooldooor"), projectId: 69, rulesetId: 420, - redeemCount: 4, - totalSupply: 5, - surplus: 6, - reclaimAmount: JBTokenAmount(address(1), amountIn, 2, 3), + redeemCount: redeemCountIn, + totalSupply: totalSupplyIn, + surplus: JBTokenAmount(address(1), 6, 2, 3), useTotalSurplus: true, - redemptionRate: 7, + redemptionRate: redemptionRateIn, metadata: "" }); - (uint256 amountOut, JBRedeemHookSpecification[] memory redeemSpecifications) = - hook.beforeRedeemRecordedWith(beforeRedeemRecordedContext); + ( + uint256 redemptionRateOut, + uint256 redeemCountOut, + uint256 totalSupplyOut, + JBRedeemHookSpecification[] memory redeemSpecifications + ) = hook.beforeRedeemRecordedWith(beforeRedeemRecordedContext); // Make sure the redemption amount is unchanged and that no specifications were returned. - assertEq(amountOut, amountIn); + assertEq(redemptionRateOut, redemptionRateIn); + assertEq(redeemCountOut, redeemCountIn); + assertEq(totalSupplyOut, totalSupplyIn); assertEq(redeemSpecifications.length, 0); } diff --git a/test/helpers/TestBaseWorkflowV3.sol b/test/helpers/TestBaseWorkflowV3.sol index 816849e..74d82ee 100644 --- a/test/helpers/TestBaseWorkflowV3.sol +++ b/test/helpers/TestBaseWorkflowV3.sol @@ -229,7 +229,7 @@ contract TestBaseWorkflowV3 is Test { // Deploy the JBX ERC-20 for the project. vm.prank(multisig); - jbController.deployERC20For(projectId, "jbx", "jbx"); + jbController.deployERC20For(projectId, "jbx", "jbx", bytes32(0)); // Set the buyback hook pool up for the project. vm.prank(multisig);