diff --git a/artifacts/bytecode.hex b/artifacts/bytecode.hex index 8ce8b34..71e0423 100644 --- a/artifacts/bytecode.hex +++ b/artifacts/bytecode.hex @@ -1 +1 @@ -0x610120346100e957601f612b1238819003918201601f19168301916001600160401b038311848410176100ed578084926060946040528339810103126100e95761004881610101565b90604061005760208301610101565b9101519160a05260c05260e0523360805261010080526040516129fc9081610116823960805181818161015a01528181610272015281816103c401526105e2015260a051818181610310015281816105040152818161067701526108c5015260c051818181610416015261090a015260e0518181816101d701526108e801526101005181818161073501526107f50152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100e95756fe60806040526004361015610011575f80fd5b5f3560e01c8063046f7da2146101445780631aa7c0ec1461013f5780632feef2ec1461013a578063308657d71461013557806333ee5f35146101305780633ccfd60b1461012b5780635a4fd6451461012657806380f323a71461012157806381972d001461011c5780638677ab23146101175780638bd03d0a146101125780639940686e1461010d578063a65e2cfd14610108578063cb766a5614610103578063d415b3f9146100fe578063d4899a62146100f9578063ede7f6a3146100f4578063f3a504f2146100ef5763fe03a460146100ea575f80fd5b610a12565b6109ed565b610758565b61071e565b610701565b6106dd565b6105b8565b610462565b610445565b610401565b6103ae565b610391565b610375565b610239565b61021c565b6101fa565b6101c0565b610198565b34610194575f36600319011261019457610188337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610a2f565b6007805460ff19169055005b5f80fd5b34610194575f366003190112610194576003546040516001600160a01b039091168152602090f35b34610194575f3660031901126101945760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610194575f36600319011261019457602060ff600754166040519015158152f35b34610194575f366003190112610194576020600454604051908152f35b34610194575f366003190112610194576102a1600161025e60075460ff9060081c1690565b61026781610a7b565b610299828060a01b037f0000000000000000000000000000000000000000000000000000000000000000163314610a2f565b151514610abd565b6102a9611029565b61030b60206102bd60015460025490610b73565b6102cd61ff001960075416600755565b6102d65f600155565b5f80556102e4811515610b80565b60405163a9059cbb60e01b8152336004820152602481019190915291829081906044820190565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156103705761034657005b6103679060203d602011610369575b61035f8183610bd8565b810190610bff565b005b503d610355565b610c17565b34610194575f3660031901126101945760205f54604051908152f35b34610194575f366003190112610194576020600554604051908152f35b34610194575f366003190112610194576103f2337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610a2f565b6007805460ff19166001179055005b34610194575f366003190112610194576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610194575f366003190112610194576020600154604051908152f35b34610194576020366003190112610194576004356104a76104a261049e6007546104986104938260ff9060081c1690565b610a7b565b60ff1690565b1590565b610c22565b5f546104be6104b68260011c90565b831015610c67565b60045480151590816105ae575b5061057c575b506040516323b872dd60e01b815233600482015230602482015260448101829052906020826064815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215610370576103679261055f575b50600380546001600160a01b0319163317905561055a61055542610b43565b600455565b600555565b6105779060203d6020116103695761035f8183610bd8565b610536565b60055461058891610b73565b5f556105a061059b600554600654610b73565b600655565b6105a8611029565b5f6104d1565b905042115f6104cb565b346101945760403660031901126101945761063160243561062c6004356106096001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314610a2f565b61062461061f61049e60075460ff9060081c1690565b610cc7565b805f55600255565b600155565b610672602061064560025460015490610b73565b6040516323b872dd60e01b8152336004820152306024820152604481019190915291829081906064820190565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610370576106c0575b61036761010061ff00196007541617600755565b6106d89060203d6020116103695761035f8183610bd8565b6106ac565b34610194575f3660031901126101945760206106f7610d13565b6040519015158152f35b34610194575f366003190112610194576020600254604051908152f35b34610194575f3660031901126101945760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101945760403660031901126101945760043567ffffffffffffffff811161019457806004019060a06003198236030112610194576109c19160209161093461092f60846108bd602435956107b761049360075460ff9060081c1690565b6003546001600160a01b03169661086490338914806109da575b6107da90610d2b565b6107e643821115610d76565b61081b6107f38243610ddf565b7f00000000000000000000000000000000000000000000000000000000000000001015610dec565b61084b814061082b811515610e2f565b61083f6108388680610e7b565b3691610eca565b8c815191012014610f00565b61085e6108588480610e7b565b9061118d565b14610f4c565b6108776108718280610e7b565b906112e8565b906108b86108b3602489019361088d8585610e7b565b9060648c6108ab6108a1604483018a610e7b565b9390920189610e7b565b9490936113a4565b610f98565b610e7b565b9190940135937f000000000000000000000000000000000000000000000000000000000000000080957f0000000000000000000000000000000000000000000000000000000000000000937f00000000000000000000000000000000000000000000000000000000000000009361144c565b610fe4565b61094e6109456005545f5490610b73565b60015490610b73565b600380546001600160a01b0319169055916109685f600555565b6109715f600455565b61098161ff001960075416600755565b61098a5f600155565b5f80805560405163a9059cbb60e01b81526001600160a01b0390921660048301526024820193909352938492839182906044820190565b03926001600160a01b03165af180156103705761034657005b506107da6109e6610d13565b90506107d1565b34610194575f36600319011261019457602060ff60075460081c166040519015158152f35b34610194575f366003190112610194576020600654604051908152f35b15610a3657565b60405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792063616c6c61626c6520627920746865206465706c6f7965720000006044820152606490fd5b15610a8257565b60405162461bcd60e51b815260206004820152601360248201527210dbdb9d1c9858dd081b9bdd08199d5b991959606a1b6044820152606490fd5b15610ac457565b60405162461bcd60e51b815260206004820152603760248201527f54686520636f6e747261637420776173206e6f742066756e646564206f72206860448201527f6173206265656e20647261696e656420616c72656164790000000000000000006064820152608490fd5b634e487b7160e01b5f52601160045260245ffd5b9061012c8201809211610b5257565b610b2f565b9060018201809211610b5257565b6001019081600111610b5257565b91908201809211610b5257565b15610b8757565b60405162461bcd60e51b81526020600482015260156024820152744e6f20776974686472617761626c652066756e647360581b6044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610bfa57604052565b610bc4565b90816020910312610194575180151581036101945790565b6040513d5f823e3d90fd5b15610c2957565b60405162461bcd60e51b815260206004820152601660248201527510d85b98d95b1b185d1a5bdb881c995c5d595cdd195960521b6044820152606490fd5b15610c6e57565b60405162461bcd60e51b815260206004820152602b60248201527f426f6e64206d757374206265206174206c656173742068616c66206f6620726560448201526a1dd85c9908185b5bdd5b9d60aa1b6064820152608490fd5b15610cce57565b60405162461bcd60e51b815260206004820152601760248201527f436f6e747261637420616c72656164792066756e6465640000000000000000006044820152606490fd5b6004548015159081610d23575090565b905042111590565b15610d3257565b606460405162461bcd60e51b815260206004820152602060248201527f4f6e6c7920626f6e646564206578656375746f722063616e20636f6c6c6563746044820152fd5b15610d7d57565b60405162461bcd60e51b815260206004820152601d60248201527f54617267657420626c6f636b20697320696e20746865206675747572650000006044820152606490fd5b600119810191908211610b5257565b5f19810191908211610b5257565b91908203918211610b5257565b15610df357565b60405162461bcd60e51b815260206004820152601460248201527315185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b6044820152606490fd5b15610e3657565b60405162461bcd60e51b815260206004820152601d60248201527f556e61626c6520746f20726574726965766520626c6f636b20686173680000006044820152606490fd5b903590601e1981360301821215610194570180359067ffffffffffffffff82116101945760200191813603831361019457565b67ffffffffffffffff8111610bfa57601f01601f191660200190565b929192610ed682610eae565b91610ee46040519384610bd8565b829481845281830111610194578281602093845f960137010152565b15610f0757565b60405162461bcd60e51b815260206004820152601a60248201527f426c6f636b206865616465722068617368206d69736d617463680000000000006044820152606490fd5b15610f5357565b60405162461bcd60e51b815260206004820152601c60248201527f48656164657220626c6f636b206e756d626572206d69736d61746368000000006044820152606490fd5b15610f9f57565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c69642072656365697074204d50542070726f6f66000000000000006044820152606490fd5b15610feb57565b60405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a5908151c985b9cd9995c88195d995b9d60521b6044820152606490fd5b611031610d13565b611056576bffffffffffffffffffffffff60a01b600354166003555f6005555f600455565b60405162461bcd60e51b815260206004820152602160248201527f43616e6e6f74207265736574207768696c6520626f6e642069732061637469766044820152606560f81b6064820152608490fd5b634e487b7160e01b5f52603260045260245ffd5b90156110c25790565b6110a5565b908210156110c2570190565b156110da57565b60405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908149314081b1a5cdd60821b6044820152606490fd5b60ff60f6199116019060ff8211610b5257565b60ff60bf199116019060ff8211610b5257565b60ff60b6199116019060ff8211610b5257565b60ff607f199116019060ff8211610b5257565b60ff166001019060ff8211610b5257565b8051156110c25760200190565b9081518110156110c2570160200190565b91905f6111c4600360fe1b6001600160f81b03196111bc6111ae86896110b9565b356001600160f81b03191690565b1610156110d3565b601f60fb1b6001600160f81b03196111df6111ae85886110b9565b1610611289578061121361049861120e6112096112036111ae61121997898c6110c7565b60f81c90565b611112565b61115e565b90610b73565b905b5f5b60088110611274575061123092936117da565b505f9190825b815184101561126f5760019060081b611266610498611203611258888761117c565b516001600160f81b03191690565b17930192611236565b925050565b916112826001918387611601565b920161121d565b5060019061121b565b1561129957565b60405162461bcd60e51b815260206004820152602160248201527f496e76616c6964207265636569707473526f6f7420524c5020656e636f64696e6044820152606760f81b6064820152608490fd5b9091905f61130a600360fe1b6001600160f81b03196111bc6111ae88876110b9565b601f60fb1b6001600160f81b03196113256111ae87866110b9565b161061139c578061121361049861120e6112096112036111ae611349978b8a6110c7565b5f5b60058110611387575061137d611382929394600560fd1b906113766111ae8560ff60f81b93896110c7565b1614611292565b610b57565b013590565b906113956001918685611601565b910161134b565b506001611349565b6113ba6113c2929394956113c898973691610eca565b923691610eca565b906119da565b90565b156113d257565b60405162461bcd60e51b81526020600482015260136024820152720496e76616c6964207265636569707420524c5606c1b6044820152606490fd5b1561141457565b60405162461bcd60e51b815260206004820152601060248201526f0496e76616c6964206c6f677320524c560841b6044820152606490fd5b959493929190805f818981151580611599575b611590575b60ff61147c6112036111ae866114849660c0966110c7565b1610156113cb565b8860f860ff61149a6112036111ae8688876110c7565b161061157e5761049861120e6112096112036111ae866114bd98611213976110c7565b81905b885f5b60038110611565575060c06114e56104986112036111ae86886114ec976110c7565b101561140d565b8860f86115036104986112036111ae8688876110c7565b106115545761049861120e6112096112036111ae8661152598611213976110c7565b915b5f905b80821061153d5750506113c89596611c49565b909261154c600191848b611601565b93019061152a565b5061155f9150610b57565b91611527565b929160019261157392611601565b9101908883926114c3565b506115899150610b57565b81906114c0565b60019250611464565b50608060ff6115ae6112036111ae86866110b9565b161061145f565b156115bc57565b60405162461bcd60e51b815260206004820152601860248201527f524c50206f6666736574206f7574206f6620626f756e647300000000000000006044820152606490fd5b919061160e8183106115b5565b61161f6112036111ae8484876110c7565b9060ff8216608081101561163a575050506113c89150610b57565b91929160b88110156116625750506113c8925061049861165c61121392610b57565b9261114b565b90929060c08110156116dd575061049861167e91949394611138565b915f935f915b8483106116a4575050506113c8929161169f61169f92610b57565b610b73565b9091946116b360019160081b90565b6116d36104986112036111ae6116cc8b61169f8b610b57565b88886110c7565b1795019190611684565b90929060f8111561170357506113c892506104986116fd61121392610b57565b92611125565b929161049861171191611112565b915f935f915b848310611732575050506113c8929161169f61169f92610b57565b90919461174160019160081b90565b61175a6104986112036111ae6116cc8b61169f8b610b57565b1795019190611717565b604080519091906117758382610bd8565b6001815291601f1901366020840137565b604080519091906117978382610bd8565b6014815291601f1901366020840137565b906117b282610eae565b6117bf6040519182610bd8565b82815280926117d0601f1991610eae565b0190602036910137565b6117e58284106115b5565b6117f66112036111ae8585856110c7565b9260ff841660808110156118305750505050611810611764565b9060f81b6001600160f81b0319165f1a6118298261116f565b5390600190565b60b881969592939496105f1461189e575061049861184d9161114b565b91611857836117a8565b945f5b84811061186e57505050506113c890610b65565b8061188b6111ae61188460019461169f89610b57565b85876110c7565b5f1a611897828a61117c565b530161185a565b60c0111561193f576104986118b291611138565b905f925f5b83811061191057506118c8846117a8565b955f5b8581106118e357505050509061169f6113c892610b65565b806118fd6111ae61188460019461169f8a61169f8b610b57565b5f1a611909828b61117c565b53016118cb565b9360019060081b6119376104986112036111ae6119308a61169f8a610b57565b8c886110c7565b1794016118b7565b60405162461bcd60e51b815260206004820152601e60248201527f457870656374656420737472696e67206974656d2c20676f74206c69737400006044820152606490fd5b1561198b57565b60405162461bcd60e51b815260206004820152602160248201527f457870656374656420524c50206c69737420666f722070726f6f66206e6f64656044820152607360f81b6064820152608490fd5b919390929190611a06600360fe1b6001600160f81b03196119fe6111ae878a6110b9565b161015611984565b601f60fb1b6001600160f81b0319611a216111ae86896110b9565b1610611b7257611a45611a406104986112096112036111ae888b6110b9565b610b65565b9492905b945f5b828210611a5e57505050505050505f90565b611a7c611a7583611a7036878a610eca565b611cfe565b9093610b73565b968251602084012003611b1057600360fe1b611aaa611a9d6112588561116f565b6001600160f81b03191690565b10611b10578590846001601f60fb1b611ac8611a9d6112588861116f565b1015611b54575b611ad98186611e88565b60118103611b1b5750611aeb9461201a565b949115611b10578415611b045793915b91959093611a4c565b50505050505050600190565b505050505050505f90565b909350600214159050611b4857848792611b3494611ed4565b949115611b10578415611b04579391611afb565b50505050505050505f90565b50611b6d611a406104986112096112036112588961116f565b611acf565b6001949290611a49565b15611b8357565b60405162461bcd60e51b815260206004820152600f60248201526e0496e76616c6964206c6f6720524c5608c1b6044820152606490fd5b15611bc157565b60405162461bcd60e51b815260206004820152601e60248201527f496e76616c696420656d69747465722061646472657373206c656e67746800006044820152606490fd5b15611c0d57565b60405162461bcd60e51b815260206004820152601460248201527315dc9bdb99c81d1bdad95b8818dbdb9d1c9858dd60621b6044820152606490fd5b9160146113c896959461169f84611ce5948781611c7c60c060ff611c746112036111ae868a896110c7565b161015611b7c565b60f860ff611c916112036111ae8589886110c7565b1610611ceb575061049861120e6112096112036111ae86611cb598611213976110c7565b915b611cc283878961212f565b9490611cd082825114611bba565b01516001600160a01b03908116911614611c06565b91612339565b915050611cf89150610b57565b91611cb7565b611d0a815183106115b5565b611d1a611203611258848461117c565b9160ff83166080811015611d3357505050611810611764565b919392909160b8811015611d9d5750610498611d4e9161114b565b90611d58826117a8565b935f5b838110611d6e575050506113c890610b65565b80611d8a611258611d8460019461169f88610b57565b8561117c565b5f1a611d96828961117c565b5301611d5b565b60c01115611e3b57610498611db191611138565b5f915f5b828110611e0d5750611dc6836117a8565b945f5b848110611de0575050509061169f6113c892610b65565b80611dfa611258611d8460019461169f8961169f8a610b57565b5f1a611e06828a61117c565b5301611dc9565b9260019060081b611e33610498611203611258611e2d8961169f89610b57565b8b61117c565b179301611db5565b5091611e478382612484565b92611e51846117a8565b915f5b858110611e62575050509190565b80611e75611258611d8460019487610b73565b5f1a611e81828761117c565b5301611e54565b5f915b8151811015611eb957611e9e8183612484565b8101809111610b5257915f198114610b525760010191611e8b565b505090565b908160011b9180830460021490151715610b5257565b83949291611ee28183611cfe565b9390611f016020611ef86112036112588561116f565b161515916125b4565b97889115611fa35750611f15905187610b73565b611f1f8251611ebe565b14611f34575b505050505050505f905f905f90565b86866001928251611f91575b505050611f4e575b80611f25565b611f6192611f5b91610b73565b90611cfe565b5060208151910120906020815191012014611f7f5780808080611f48565b611f8a915190610b73565b6001915f90565b611f9b935061271a565b86865f611f40565b611fb4939495965061049e9261271a565b61200d57611fc592611f5b91610b73565b50908151602081145f14611fed57506020611fe5920151925b5190610b73565b916001929190565b8015612001576020611fe593012092611fde565b505050505f905f905f90565b50505050505f905f905f90565b919092936120288251611ebe565b8510156120d2575061120361125861204a926120448760011c90565b9061117c565b600184166120c95760041c600f16915b905f925b60ff811684106120a957506120739250611cfe565b508051801561209e57611fe591602082036120945760209150015191610b57565b6020012091610b57565b5050505f905f905f90565b909160016120bd8261121360ff9487612484565b9401939291905061205e565b600f169161205a565b9290509392935f915b60108310612115576120ed9250611cfe565b50602081519101209060208151910120145f1461210c57600191905f90565b5f915081908190565b906121268161121360019385612484565b920191906120db565b91909161213d8383106115b5565b609460ff6121526112036111ae8688876110c7565b160361219e57612160611786565b925f5b60148110612175575050505090601590565b8061218b6111ae61188460019461169f89610b57565b5f1a612197828861117c565b5301612163565b60405162461bcd60e51b815260206004820152601c60248201527f496e76616c6964206164647265737320524c5020656e636f64696e67000000006044820152606490fd5b156121ea57565b60405162461bcd60e51b81526020600482015260126024820152710496e76616c696420746f7069637320524c560741b6044820152606490fd5b1561222b57565b60405162461bcd60e51b815260206004820152601560248201527457726f6e67206576656e74207369676e617475726560581b6044820152606490fd5b1561226f57565b60405162461bcd60e51b81526020600482015260136024820152720a8de40c2c8c8e4cae6e640dad2e6dac2e8c6d606b1b6044820152606490fd5b156122b157565b60405162461bcd60e51b8152602060048201526014602482015273416d6f756e74206461746120746f6f206c6f6e6760601b6044820152606490fd5b156122f457565b60405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220616d6f756e74206d69736d6174636800000000000000006044820152606490fd5b918061241b612428956124086123fc6123fc6123f56123ee896123e77fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123e18e8060f86124229f6123b56112036111ae836123ae60c060ff6123a68f6111ae839a61120392819e6110c7565b1610156121e3565b8b886110c7565b161061247a578061121361049861120e6112096112036111ae6123d9978d8a6110c7565b9485916127d8565b14612224565b8a8c611601565b898b611601565b888a6127d8565b6001600160a01b031690565b6001600160a01b03908116911614612268565b8284611601565b9161284a565b506124376020825111156122aa565b5f92835b82518510156124665760019060081b61245d610498611203611258898861117c565b1794019361243b565b909350612475929150146122ed565b600190565b506123d98d610b57565b90612491825182106115b5565b6124a1611203611258838561117c565b9160ff831660808110156124b85750505050600190565b60b88110156124d35750505061049861120e6113c89261114b565b60c081101561253f5750916104986124ea91611138565b905f925f915b838310612507575050509061169f6113c892610b65565b90919361251660019160081b90565b61253561049861120361125861252f8a61169f89610b57565b8861117c565b17940191906124f0565b60f8111561255857505061049861120e6113c892611125565b9161049861256591611112565b905f925f915b838310612582575050509061169f6113c892610b65565b90919361259160019160081b90565b6125aa61049861120361125861252f8a61169f89610b57565b179401919061256b565b90815115612718576125cb6112036112588461116f565b601081161561269a576125ee6125e96125e48551611ebe565b610dd1565b6117a8565b9060f81b600f60f81b165f1a6126038261116f565b5360015b835181101561269557806126426126326126296112036112586001968a61117c565b60041c600f1690565b60f81b6001600160f81b03191690565b61265b6126516125e484611ebe565b915f1a918561117c565b53612682600f612671611203611258858a61117c565b1660f81b6001600160f81b03191690565b61268e61265183611ebe565b5301612607565b509150565b506126b06125e96126ab8451611ebe565b610dc2565b60015b835181101561269557806126d56126326126296112036112586001968a61117c565b6126e96126516126e484610dd1565b611ebe565b536126ff600f612671611203611258858a61117c565b61271161265161137d6126e485610dd1565b53016126b3565b565b919091612728825184610b73565b6127328251611ebe565b106127d1575f5b82518110156127c85761275561274f8286610b73565b60011690565b6127aa5761277e612629611203611258612778612772868a610b73565b60011c90565b8661117c565b60ff612793610498611203611258868961117c565b9116036127a257600101612739565b505050505f90565b600f6127c2611203611258612778612772868a610b73565b1661277e565b50505050600190565b5050505f90565b9190600560fd1b906001600160f81b0319906127f6908490866110c7565b35160361280557016001013590565b60405162461bcd60e51b815260206004820152601760248201527f45787065637465642033322d6279746520737472696e670000000000000000006044820152606490fd5b6128558284106115b5565b6128666112036111ae8585856110c7565b9260ff841660808110156128805750505050611810611764565b60b881969592939496105f146128e7575061049861289d9161114b565b916128a7836117a8565b945f5b8481106128be57505050506113c890610b65565b806128d46111ae61188460019461169f89610b57565b5f1a6128e0828a61117c565b53016128aa565b60c01115612981576104986128fb91611138565b905f925f5b8381106129595750612911846117a8565b955f5b85811061292c57505050509061169f6113c892610b65565b806129466111ae61188460019461169f8a61169f8b610b57565b5f1a612952828b61117c565b5301612914565b9360019060081b6129796104986112036111ae6119308a61169f8a610b57565b179401612900565b60405162461bcd60e51b815260206004820152601e60248201527f457870656374656420737472696e6720646174612c20676f74206c69737400006044820152606490fdfea26469706673582212204370b627511042e2b1a7ba2e7412bfee5132699ee563da47d4823df15afa89fc64736f6c634300081c0033 +0x610120346100e957601f612b7c38819003918201601f19168301916001600160401b038311848410176100ed578084926060946040528339810103126100e95761004881610101565b90604061005760208301610101565b9101519160a05260c05260e052336080526101008052604051612a669081610116823960805181818161015a01528181610272015281816103c401526105f5015260a051818181610310015281816105170152818161068a01526108d8015260c051818181610416015261091d015260e0518181816101d701526108fb01526101005181818161074801526108080152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100e95756fe60806040526004361015610011575f80fd5b5f3560e01c8063046f7da2146101445780631aa7c0ec1461013f5780632feef2ec1461013a578063308657d71461013557806333ee5f35146101305780633ccfd60b1461012b5780635a4fd6451461012657806380f323a71461012157806381972d001461011c5780638677ab23146101175780638bd03d0a146101125780639940686e1461010d578063a65e2cfd14610108578063cb766a5614610103578063d415b3f9146100fe578063d4899a62146100f9578063ede7f6a3146100f4578063f3a504f2146100ef5763fe03a460146100ea575f80fd5b610a25565b610a00565b61076b565b610731565b610714565b6106f0565b6105cb565b610462565b610445565b610401565b6103ae565b610391565b610375565b610239565b61021c565b6101fa565b6101c0565b610198565b34610194575f36600319011261019457610188337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610a42565b6007805460ff19169055005b5f80fd5b34610194575f366003190112610194576003546040516001600160a01b039091168152602090f35b34610194575f3660031901126101945760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610194575f36600319011261019457602060ff600754166040519015158152f35b34610194575f366003190112610194576020600454604051908152f35b34610194575f366003190112610194576102a1600161025e60075460ff9060081c1690565b61026781610a8e565b610299828060a01b037f0000000000000000000000000000000000000000000000000000000000000000163314610a42565b151514610ad0565b6102a9611093565b61030b60206102bd60015460025490610b86565b6102cd61ff001960075416600755565b6102d65f600155565b5f80556102e4811515610b93565b60405163a9059cbb60e01b8152336004820152602481019190915291829081906044820190565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156103705761034657005b6103679060203d602011610369575b61035f8183610beb565b810190610c12565b005b503d610355565b610c2a565b34610194575f3660031901126101945760205f54604051908152f35b34610194575f366003190112610194576020600554604051908152f35b34610194575f366003190112610194576103f2337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610a42565b6007805460ff19166001179055005b34610194575f366003190112610194576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610194575f366003190112610194576020600154604051908152f35b34610194576020366003190112610194576004356104a76104a261049e6007546104986104938260ff9060081c1690565b610a8e565b60ff1690565b1590565b610c35565b5f546104be6104b68260011c90565b831015610c7a565b60045480151590816105c1575b5061058f575b506104e56104e061049e610d7d565b610cda565b6040516323b872dd60e01b815233600482015230602482015260448101829052906020826064815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19182156103705761036792610572575b50600380546001600160a01b0319163317905561056d61056842610b56565b600455565b600555565b61058a9060203d6020116103695761035f8183610beb565b610549565b60055461059b91610b86565b5f556105b36105ae600554600654610b86565b600655565b6105bb611093565b5f6104d1565b905042115f6104cb565b346101945760403660031901126101945761064460243561063f60043561061c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314610a42565b61063761063261049e60075460ff9060081c1690565b610d31565b805f55600255565b600155565b610685602061065860025460015490610b86565b6040516323b872dd60e01b8152336004820152306024820152604481019190915291829081906064820190565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610370576106d3575b61036761010061ff00196007541617600755565b6106eb9060203d6020116103695761035f8183610beb565b6106bf565b34610194575f36600319011261019457602061070a610d7d565b6040519015158152f35b34610194575f366003190112610194576020600254604051908152f35b34610194575f3660031901126101945760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101945760403660031901126101945760043567ffffffffffffffff811161019457806004019060a06003198236030112610194576109d49160209161094761094260846108d0602435956107ca61049360075460ff9060081c1690565b6003546001600160a01b03169661087790338914806109ed575b6107ed90610d95565b6107f943821115610de0565b61082e6108068243610e49565b7f00000000000000000000000000000000000000000000000000000000000000001015610e56565b61085e814061083e811515610e99565b61085261084b8680610ee5565b3691610f34565b8c815191012014610f6a565b61087161086b8480610ee5565b906111f7565b14610fb6565b61088a6108848280610ee5565b90611352565b906108cb6108c660248901936108a08585610ee5565b9060648c6108be6108b4604483018a610ee5565b9390920189610ee5565b94909361140e565b611002565b610ee5565b9190940135937f000000000000000000000000000000000000000000000000000000000000000080957f0000000000000000000000000000000000000000000000000000000000000000937f0000000000000000000000000000000000000000000000000000000000000000936114b6565b61104e565b6109616109586005545f5490610b86565b60015490610b86565b600380546001600160a01b03191690559161097b5f600555565b6109845f600455565b61099461ff001960075416600755565b61099d5f600155565b5f80805560405163a9059cbb60e01b81526001600160a01b0390921660048301526024820193909352938492839182906044820190565b03926001600160a01b03165af180156103705761034657005b506107ed6109f9610d7d565b90506107e4565b34610194575f36600319011261019457602060ff60075460081c166040519015158152f35b34610194575f366003190112610194576020600654604051908152f35b15610a4957565b60405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792063616c6c61626c6520627920746865206465706c6f7965720000006044820152606490fd5b15610a9557565b60405162461bcd60e51b815260206004820152601360248201527210dbdb9d1c9858dd081b9bdd08199d5b991959606a1b6044820152606490fd5b15610ad757565b60405162461bcd60e51b815260206004820152603760248201527f54686520636f6e747261637420776173206e6f742066756e646564206f72206860448201527f6173206265656e20647261696e656420616c72656164790000000000000000006064820152608490fd5b634e487b7160e01b5f52601160045260245ffd5b9061012c8201809211610b6557565b610b42565b9060018201809211610b6557565b6001019081600111610b6557565b91908201809211610b6557565b15610b9a57565b60405162461bcd60e51b81526020600482015260156024820152744e6f20776974686472617761626c652066756e647360581b6044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610c0d57604052565b610bd7565b90816020910312610194575180151581036101945790565b6040513d5f823e3d90fd5b15610c3c57565b60405162461bcd60e51b815260206004820152601660248201527510d85b98d95b1b185d1a5bdb881c995c5d595cdd195960521b6044820152606490fd5b15610c8157565b60405162461bcd60e51b815260206004820152602b60248201527f426f6e64206d757374206265206174206c656173742068616c66206f6620726560448201526a1dd85c9908185b5bdd5b9d60aa1b6064820152608490fd5b15610ce157565b60405162461bcd60e51b815260206004820152602260248201527f416e6f74686572206578656375746f7220697320616c726561647920626f6e64604482015261195960f21b6064820152608490fd5b15610d3857565b60405162461bcd60e51b815260206004820152601760248201527f436f6e747261637420616c72656164792066756e6465640000000000000000006044820152606490fd5b6004548015159081610d8d575090565b905042111590565b15610d9c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f6e6c7920626f6e646564206578656375746f722063616e20636f6c6c6563746044820152fd5b15610de757565b60405162461bcd60e51b815260206004820152601d60248201527f54617267657420626c6f636b20697320696e20746865206675747572650000006044820152606490fd5b600119810191908211610b6557565b5f19810191908211610b6557565b91908203918211610b6557565b15610e5d57565b60405162461bcd60e51b815260206004820152601460248201527315185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b6044820152606490fd5b15610ea057565b60405162461bcd60e51b815260206004820152601d60248201527f556e61626c6520746f20726574726965766520626c6f636b20686173680000006044820152606490fd5b903590601e1981360301821215610194570180359067ffffffffffffffff82116101945760200191813603831361019457565b67ffffffffffffffff8111610c0d57601f01601f191660200190565b929192610f4082610f18565b91610f4e6040519384610beb565b829481845281830111610194578281602093845f960137010152565b15610f7157565b60405162461bcd60e51b815260206004820152601a60248201527f426c6f636b206865616465722068617368206d69736d617463680000000000006044820152606490fd5b15610fbd57565b60405162461bcd60e51b815260206004820152601c60248201527f48656164657220626c6f636b206e756d626572206d69736d61746368000000006044820152606490fd5b1561100957565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c69642072656365697074204d50542070726f6f66000000000000006044820152606490fd5b1561105557565b60405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a5908151c985b9cd9995c88195d995b9d60521b6044820152606490fd5b61109b610d7d565b6110c0576bffffffffffffffffffffffff60a01b600354166003555f6005555f600455565b60405162461bcd60e51b815260206004820152602160248201527f43616e6e6f74207265736574207768696c6520626f6e642069732061637469766044820152606560f81b6064820152608490fd5b634e487b7160e01b5f52603260045260245ffd5b901561112c5790565b61110f565b9082101561112c570190565b1561114457565b60405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908149314081b1a5cdd60821b6044820152606490fd5b60ff60f6199116019060ff8211610b6557565b60ff60bf199116019060ff8211610b6557565b60ff60b6199116019060ff8211610b6557565b60ff607f199116019060ff8211610b6557565b60ff166001019060ff8211610b6557565b80511561112c5760200190565b90815181101561112c570160200190565b91905f61122e600360fe1b6001600160f81b03196112266112188689611123565b356001600160f81b03191690565b16101561113d565b601f60fb1b6001600160f81b03196112496112188588611123565b16106112f3578061127d61049861127861127361126d61121861128397898c611131565b60f81c90565b61117c565b6111c8565b90610b86565b905b5f5b600881106112de575061129a9293611844565b505f9190825b81518410156112d95760019060081b6112d061049861126d6112c288876111e6565b516001600160f81b03191690565b179301926112a0565b925050565b916112ec600191838761166b565b9201611287565b50600190611285565b1561130357565b60405162461bcd60e51b815260206004820152602160248201527f496e76616c6964207265636569707473526f6f7420524c5020656e636f64696e6044820152606760f81b6064820152608490fd5b9091905f611374600360fe1b6001600160f81b03196112266112188887611123565b601f60fb1b6001600160f81b031961138f6112188786611123565b1610611406578061127d61049861127861127361126d6112186113b3978b8a611131565b5f5b600581106113f157506113e76113ec929394600560fd1b906113e06112188560ff60f81b9389611131565b16146112fc565b610b6a565b013590565b906113ff600191868561166b565b91016113b5565b5060016113b3565b61142461142c9293949561143298973691610f34565b923691610f34565b90611a44565b90565b1561143c57565b60405162461bcd60e51b81526020600482015260136024820152720496e76616c6964207265636569707420524c5606c1b6044820152606490fd5b1561147e57565b60405162461bcd60e51b815260206004820152601060248201526f0496e76616c6964206c6f677320524c560841b6044820152606490fd5b959493929190805f818981151580611603575b6115fa575b60ff6114e661126d611218866114ee9660c096611131565b161015611435565b8860f860ff61150461126d611218868887611131565b16106115e85761049861127861127361126d611218866115279861127d97611131565b81905b885f5b600381106115cf575060c061154f61049861126d611218868861155697611131565b1015611477565b8860f861156d61049861126d611218868887611131565b106115be5761049861127861127361126d6112188661158f9861127d97611131565b915b5f905b8082106115a75750506114329596611cb3565b90926115b6600191848b61166b565b930190611594565b506115c99150610b6a565b91611591565b92916001926115dd9261166b565b91019088839261152d565b506115f39150610b6a565b819061152a565b600192506114ce565b50608060ff61161861126d6112188686611123565b16106114c9565b1561162657565b60405162461bcd60e51b815260206004820152601860248201527f524c50206f6666736574206f7574206f6620626f756e647300000000000000006044820152606490fd5b919061167881831061161f565b61168961126d611218848487611131565b9060ff821660808110156116a4575050506114329150610b6a565b91929160b88110156116cc57505061143292506104986116c661127d92610b6a565b926111b5565b90929060c081101561174757506104986116e8919493946111a2565b915f935f915b84831061170e57505050611432929161170961170992610b6a565b610b86565b90919461171d60019160081b90565b61173d61049861126d6112186117368b6117098b610b6a565b8888611131565b17950191906116ee565b90929060f8111561176d5750611432925061049861176761127d92610b6a565b9261118f565b929161049861177b9161117c565b915f935f915b84831061179c57505050611432929161170961170992610b6a565b9091946117ab60019160081b90565b6117c461049861126d6112186117368b6117098b610b6a565b1795019190611781565b604080519091906117df8382610beb565b6001815291601f1901366020840137565b604080519091906118018382610beb565b6014815291601f1901366020840137565b9061181c82610f18565b6118296040519182610beb565b828152809261183a601f1991610f18565b0190602036910137565b61184f82841061161f565b61186061126d611218858585611131565b9260ff8416608081101561189a575050505061187a6117ce565b9060f81b6001600160f81b0319165f1a611893826111d9565b5390600190565b60b881969592939496105f1461190857506104986118b7916111b5565b916118c183611812565b945f5b8481106118d8575050505061143290610b78565b806118f56112186118ee60019461170989610b6a565b8587611131565b5f1a611901828a6111e6565b53016118c4565b60c011156119a95761049861191c916111a2565b905f925f5b83811061197a575061193284611812565b955f5b85811061194d57505050509061170961143292610b78565b806119676112186118ee6001946117098a6117098b610b6a565b5f1a611973828b6111e6565b5301611935565b9360019060081b6119a161049861126d61121861199a8a6117098a610b6a565b8c88611131565b179401611921565b60405162461bcd60e51b815260206004820152601e60248201527f457870656374656420737472696e67206974656d2c20676f74206c69737400006044820152606490fd5b156119f557565b60405162461bcd60e51b815260206004820152602160248201527f457870656374656420524c50206c69737420666f722070726f6f66206e6f64656044820152607360f81b6064820152608490fd5b919390929190611a70600360fe1b6001600160f81b0319611a68611218878a611123565b1610156119ee565b601f60fb1b6001600160f81b0319611a8b6112188689611123565b1610611bdc57611aaf611aaa61049861127361126d611218888b611123565b610b78565b9492905b945f5b828210611ac857505050505050505f90565b611ae6611adf83611ada36878a610f34565b611d68565b9093610b86565b968251602084012003611b7a57600360fe1b611b14611b076112c2856111d9565b6001600160f81b03191690565b10611b7a578590846001601f60fb1b611b32611b076112c2886111d9565b1015611bbe575b611b438186611ef2565b60118103611b855750611b5594612084565b949115611b7a578415611b6e5793915b91959093611ab6565b50505050505050600190565b505050505050505f90565b909350600214159050611bb257848792611b9e94611f3e565b949115611b7a578415611b6e579391611b65565b50505050505050505f90565b50611bd7611aaa61049861127361126d6112c2896111d9565b611b39565b6001949290611ab3565b15611bed57565b60405162461bcd60e51b815260206004820152600f60248201526e0496e76616c6964206c6f6720524c5608c1b6044820152606490fd5b15611c2b57565b60405162461bcd60e51b815260206004820152601e60248201527f496e76616c696420656d69747465722061646472657373206c656e67746800006044820152606490fd5b15611c7757565b60405162461bcd60e51b815260206004820152601460248201527315dc9bdb99c81d1bdad95b8818dbdb9d1c9858dd60621b6044820152606490fd5b91601461143296959461170984611d4f948781611ce660c060ff611cde61126d611218868a89611131565b161015611be6565b60f860ff611cfb61126d611218858988611131565b1610611d55575061049861127861127361126d61121886611d1f9861127d97611131565b915b611d2c838789612199565b9490611d3a82825114611c24565b01516001600160a01b03908116911614611c70565b916123a3565b915050611d629150610b6a565b91611d21565b611d748151831061161f565b611d8461126d6112c284846111e6565b9160ff83166080811015611d9d5750505061187a6117ce565b919392909160b8811015611e075750610498611db8916111b5565b90611dc282611812565b935f5b838110611dd85750505061143290610b78565b80611df46112c2611dee60019461170988610b6a565b856111e6565b5f1a611e0082896111e6565b5301611dc5565b60c01115611ea557610498611e1b916111a2565b5f915f5b828110611e775750611e3083611812565b945f5b848110611e4a575050509061170961143292610b78565b80611e646112c2611dee600194611709896117098a610b6a565b5f1a611e70828a6111e6565b5301611e33565b9260019060081b611e9d61049861126d6112c2611e978961170989610b6a565b8b6111e6565b179301611e1f565b5091611eb183826124ee565b92611ebb84611812565b915f5b858110611ecc575050509190565b80611edf6112c2611dee60019487610b86565b5f1a611eeb82876111e6565b5301611ebe565b5f915b8151811015611f2357611f0881836124ee565b8101809111610b6557915f198114610b655760010191611ef5565b505090565b908160011b9180830460021490151715610b6557565b83949291611f4c8183611d68565b9390611f6b6020611f6261126d6112c2856111d9565b1615159161261e565b9788911561200d5750611f7f905187610b86565b611f898251611f28565b14611f9e575b505050505050505f905f905f90565b86866001928251611ffb575b505050611fb8575b80611f8f565b611fcb92611fc591610b86565b90611d68565b5060208151910120906020815191012014611fe95780808080611fb2565b611ff4915190610b86565b6001915f90565b6120059350612784565b86865f611faa565b61201e939495965061049e92612784565b6120775761202f92611fc591610b86565b50908151602081145f146120575750602061204f920151925b5190610b86565b916001929190565b801561206b57602061204f93012092612048565b505050505f905f905f90565b50505050505f905f905f90565b919092936120928251611f28565b85101561213c575061126d6112c26120b4926120ae8760011c90565b906111e6565b600184166121335760041c600f16915b905f925b60ff8116841061211357506120dd9250611d68565b50805180156121085761204f91602082036120fe5760209150015191610b6a565b6020012091610b6a565b5050505f905f905f90565b909160016121278261127d60ff94876124ee565b940193929190506120c8565b600f16916120c4565b9290509392935f915b6010831061217f576121579250611d68565b50602081519101209060208151910120145f1461217657600191905f90565b5f915081908190565b906121908161127d600193856124ee565b92019190612145565b9190916121a783831061161f565b609460ff6121bc61126d611218868887611131565b1603612208576121ca6117f0565b925f5b601481106121df575050505090601590565b806121f56112186118ee60019461170989610b6a565b5f1a61220182886111e6565b53016121cd565b60405162461bcd60e51b815260206004820152601c60248201527f496e76616c6964206164647265737320524c5020656e636f64696e67000000006044820152606490fd5b1561225457565b60405162461bcd60e51b81526020600482015260126024820152710496e76616c696420746f7069637320524c560741b6044820152606490fd5b1561229557565b60405162461bcd60e51b815260206004820152601560248201527457726f6e67206576656e74207369676e617475726560581b6044820152606490fd5b156122d957565b60405162461bcd60e51b81526020600482015260136024820152720a8de40c2c8c8e4cae6e640dad2e6dac2e8c6d606b1b6044820152606490fd5b1561231b57565b60405162461bcd60e51b8152602060048201526014602482015273416d6f756e74206461746120746f6f206c6f6e6760601b6044820152606490fd5b1561235e57565b60405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220616d6f756e74206d69736d6174636800000000000000006044820152606490fd5b91806124856124929561247261246661246661245f612458896124517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61244b8e8060f861248c9f61241f61126d6112188361241860c060ff6124108f611218839a61126d92819e611131565b16101561224d565b8b88611131565b16106124e4578061127d61049861127861127361126d611218612443978d8a611131565b948591612842565b1461228e565b8a8c61166b565b898b61166b565b888a612842565b6001600160a01b031690565b6001600160a01b039081169116146122d2565b828461166b565b916128b4565b506124a1602082511115612314565b5f92835b82518510156124d05760019060081b6124c761049861126d6112c289886111e6565b179401936124a5565b9093506124df92915014612357565b600190565b506124438d610b6a565b906124fb8251821061161f565b61250b61126d6112c283856111e6565b9160ff831660808110156125225750505050600190565b60b881101561253d57505050610498611278611432926111b5565b60c08110156125a9575091610498612554916111a2565b905f925f915b838310612571575050509061170961143292610b78565b90919361258060019160081b90565b61259f61049861126d6112c26125998a61170989610b6a565b886111e6565b179401919061255a565b60f811156125c25750506104986112786114329261118f565b916104986125cf9161117c565b905f925f915b8383106125ec575050509061170961143292610b78565b9091936125fb60019160081b90565b61261461049861126d6112c26125998a61170989610b6a565b17940191906125d5565b908151156127825761263561126d6112c2846111d9565b60108116156127045761265861265361264e8551611f28565b610e3b565b611812565b9060f81b600f60f81b165f1a61266d826111d9565b5360015b83518110156126ff57806126ac61269c61269361126d6112c26001968a6111e6565b60041c600f1690565b60f81b6001600160f81b03191690565b6126c56126bb61264e84611f28565b915f1a91856111e6565b536126ec600f6126db61126d6112c2858a6111e6565b1660f81b6001600160f81b03191690565b6126f86126bb83611f28565b5301612671565b509150565b5061271a6126536127158451611f28565b610e2c565b60015b83518110156126ff578061273f61269c61269361126d6112c26001968a6111e6565b6127536126bb61274e84610e3b565b611f28565b53612769600f6126db61126d6112c2858a6111e6565b61277b6126bb6113e761274e85610e3b565b530161271d565b565b919091612792825184610b86565b61279c8251611f28565b1061283b575f5b8251811015612832576127bf6127b98286610b86565b60011690565b612814576127e861269361126d6112c26127e26127dc868a610b86565b60011c90565b866111e6565b60ff6127fd61049861126d6112c286896111e6565b91160361280c576001016127a3565b505050505f90565b600f61282c61126d6112c26127e26127dc868a610b86565b166127e8565b50505050600190565b5050505f90565b9190600560fd1b906001600160f81b03199061286090849086611131565b35160361286f57016001013590565b60405162461bcd60e51b815260206004820152601760248201527f45787065637465642033322d6279746520737472696e670000000000000000006044820152606490fd5b6128bf82841061161f565b6128d061126d611218858585611131565b9260ff841660808110156128ea575050505061187a6117ce565b60b881969592939496105f146129515750610498612907916111b5565b9161291183611812565b945f5b848110612928575050505061143290610b78565b8061293e6112186118ee60019461170989610b6a565b5f1a61294a828a6111e6565b5301612914565b60c011156129eb57610498612965916111a2565b905f925f5b8381106129c3575061297b84611812565b955f5b85811061299657505050509061170961143292610b78565b806129b06112186118ee6001946117098a6117098b610b6a565b5f1a6129bc828b6111e6565b530161297e565b9360019060081b6129e361049861126d61121861199a8a6117098a610b6a565b17940161296a565b60405162461bcd60e51b815260206004820152601e60248201527f457870656374656420737472696e6720646174612c20676f74206c69737400006044820152606490fdfea2646970667358221220febe37e39a59fa4b03f44b4b208fab6feee32dd0fe0c90a4a7368b2f6993657664736f6c634300081a0033 diff --git a/src/Escrow.sol b/src/Escrow.sol index 569d221..726fb5d 100644 --- a/src/Escrow.sol +++ b/src/Escrow.sol @@ -75,6 +75,9 @@ contract Escrow { tryResetBondData(); } + // Prevent double bonding - no one can bond while another executor is actively bonded + require(!is_bonded(), "Another executor is already bonded"); + IERC20(tokenContract).transferFrom(msg.sender, address(this), _bondAmount); bondedExecutor = msg.sender; diff --git a/test/Escrow.t.sol b/test/Escrow.t.sol index ebb07ee..6da94e9 100644 --- a/test/Escrow.t.sol +++ b/test/Escrow.t.sol @@ -327,6 +327,33 @@ contract EscrowTest is Test { assertFalse(escrow.is_bonded()); } + function testDoubleBondingPrevented() public { + _fundContract(); + _bondExecutor(); + + vm.startPrank(other); + token.approve(address(escrow), BOND_AMOUNT); + vm.expectRevert("Another executor is already bonded"); + escrow.bond(BOND_AMOUNT); + vm.stopPrank(); + } + + function testBondAfterFirstExecutorStillActive() public { + _fundContract(); + _bondExecutor(); + + vm.warp(block.timestamp + 4 minutes); + assertTrue(escrow.is_bonded()); + + vm.startPrank(other); + token.approve(address(escrow), BOND_AMOUNT); + vm.expectRevert("Another executor is already bonded"); + escrow.bond(BOND_AMOUNT); + vm.stopPrank(); + + assertEq(escrow.bondedExecutor(), executor); + } + function testMultipleBondCycles() public { _fundContract();