@boostxyz/sdk 2.0.0-alpha.27 → 2.0.0-alpha.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/BoostCore.js CHANGED
@@ -26,7 +26,7 @@ import { assertValidAddressByChainId as h } from "./utils.js";
26
26
  import { ERC20VariableIncentive as Nf } from "./Incentives/ERC20VariableIncentive.js";
27
27
  import { simulateContract as $f, writeContract as jf } from "viem/actions";
28
28
  import { parseAccount as xf, getAddress as Mf } from "viem/utils";
29
- const Tf = "0x60806040526103e8600360146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555034801561003a575f80fd5b50604051615301380380615301833981810160405281019061005c919061026b565b61006b336100f260201b60201c565b8160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506102a9565b6101006101ce60201b60201c565b15610178577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561013a57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506101cb565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101ff826101d6565b9050919050565b5f610210826101f5565b9050919050565b61022081610206565b811461022a575f80fd5b50565b5f8151905061023b81610217565b92915050565b61024a816101f5565b8114610254575f80fd5b50565b5f8151905061026581610241565b92915050565b5f8060408385031215610281576102806101d2565b5b5f61028e8582860161022d565b925050602061029f85828601610257565b9150509250929050565b61504b806102b65f395ff3fe60806040526004361061014a575f3560e01c80637b103999116100b5578063dd98558c1161006e578063dd98558c146103fa578063e21ff73114610437578063eccc19a614610473578063f04e283e1461049b578063f2fde38b146104b7578063fee81cf4146104d35761014a565b80637b1039991461030c5780638da5cb5b146103365780638fe4f52314610360578063a92647dc1461037c578063b0e21e8a146103a6578063d73792a9146103d05761014a565b806354d1f13d1161010757806354d1f13d1461024a5780635edb9eb0146102545780635f32c23e1461027e57806360777795146102a6578063715018a6146102e6578063730f9c57146102f05761014a565b80630250e72b1461014e57806313c8e2de1461018a57806325692962146101c657806339a51be5146101d057806343bc42d3146101fa57806346877b1a14610222575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f91906137f5565b61050f565b6040516101819190613950565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190613993565b6105e6565b6040516101bd9190613c21565b60405180910390f35b6101ce61088e565b005b3480156101db575f80fd5b506101e46108df565b6040516101f19190613c50565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190613c93565b610904565b005b34801561022d575f80fd5b5061024860048036038101906102439190613ce8565b610938565b005b610252610983565b005b34801561025f575f80fd5b506102686109bc565b6040516102759190613d22565b60405180910390f35b348015610289575f80fd5b506102a4600480360381019061029f9190613d3b565b6109c7565b005b3480156102b1575f80fd5b506102cc60048036038101906102c791906137f5565b610b53565b6040516102dd959493929190613d88565b60405180910390f35b6102ee610bb0565b005b61030a60048036038101906103059190613e3a565b610bc3565b005b348015610317575f80fd5b50610320611104565b60405161032d9190613ef0565b60405180910390f35b348015610341575f80fd5b5061034a611129565b6040516103579190613c50565b60405180910390f35b61037a60048036038101906103759190613f09565b611151565b005b348015610387575f80fd5b50610390611166565b60405161039d9190613fad565b60405180910390f35b3480156103b1575f80fd5b506103ba61118b565b6040516103c79190613fd5565b60405180910390f35b3480156103db575f80fd5b506103e46111a5565b6040516103f19190613fd5565b60405180910390f35b348015610405575f80fd5b50610420600480360381019061041b9190613fee565b6111ab565b60405161042e92919061405f565b60405180910390f35b348015610442575f80fd5b5061045d60048036038101906104589190614086565b6118af565b60405161046a9190613c21565b60405180910390f35b34801561047e575f80fd5b5061049960048036038101906104949190613ce8565b61229d565b005b6104b560048036038101906104b09190613ce8565b6122e8565b005b6104d160048036038101906104cc9190613ce8565b612326565b005b3480156104de575f80fd5b506104f960048036038101906104f49190613ce8565b61234f565b6040516105069190613d22565b60405180910390f35b610517613607565b60045f8381526020019081526020015f206040518060a00160405290815f82015f9054906101000a900460ff16600281111561055657610555613820565b5b600281111561056857610567613820565b5b81526020015f820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815250509050919050565b6105ee613659565b5f8281548110610601576106006140d1565b5b905f5260205f209060080201604051806101000160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054806020026020016040519081016040528092919081815260200182805480156107ee57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116107a5575b50505050508152602001600582015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160068201548152602001600782015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b5f610897612368565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61090c612372565b80600360146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b610940612372565b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f8080549050905090565b3068929eee149b4bd2126854036109e55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f6109fc83836123a9565b90505f60045f8381526020019081526020015f2090505f816002015461271067ffffffffffffffff168360010154610a34919061412b565b610a3e9190614199565b90505f610a4a836123db565b905081811115610b3f575f8282610a6191906141c9565b90505f61271067ffffffffffffffff16856002015483610a81919061412b565b610a8b9190614199565b9050610a9785826125e1565b80856001015410610ac15780856001015f828254610ab591906141c9565b92505081905550610acb565b5f85600101819055505b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1687897f42ca2b02f2bdb76fff6e99ea9a7b4d9767b45bdd42d6be831eeb9f3d5cb20b1784604051610b349190613d22565b60405180910390a450505b505050503868929eee149b4bd21268555050565b6004602052805f5260405f205f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905085565b610bb8612372565b610bc15f6127c2565b565b3068929eee149b4bd212685403610be15763ab143c065f526004601cfd5b3068929eee149b4bd21268555f808781548110610c0157610c006140d1565b5b905f5260205f20906008020190505f610c1a88886123a9565b90505f60045f8381526020019081526020015f209050826002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de8588886040518463ffffffff1660e01b8152600401610c9093929190614256565b602060405180830381865afa158015610cab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccf91906142bb565b610d05576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663703b69008a8a878a8a6040518663ffffffff1660e01b8152600401610d699594939291906142e6565b6020604051808303815f875af1158015610d85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da991906142bb565b610ddf576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8073ffffffffffffffffffffffffffffffffffffffff16825f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e3c575f610e46565b610e45826123db565b5b9050836004018981548110610e5e57610e5d6140d1565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb1757cf8689896040518463ffffffff1660e01b8152600401610ec293929190614256565b6020604051808303815f875af1158015610ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0291906142bb565b610f47578487876040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f3e93929190614256565b60405180910390fd5b5f8073ffffffffffffffffffffffffffffffffffffffff16835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610fa4575f610fae565b610fad836123db565b5b90505f818311610fbe575f610fcb565b8183610fca91906141c9565b5b90505f61271067ffffffffffffffff16856002015483610feb919061412b565b610ff59190614199565b90505f8111156110955761100985826125e1565b80856001015f82825461101c91906141c9565b9250508190555060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c8e7f42ca2b02f2bdb76fff6e99ea9a7b4d9767b45bdd42d6be831eeb9f3d5cb20b178460405161108c9190613d22565b60405180910390a45b8773ffffffffffffffffffffffffffffffffffffffff168c8e7f0f29bbf4ce25d2346bbeb8a898e24e5d6d7d1d19bb895e71faecac833b2595478e8e8e6040516110e193929190614256565b60405180910390a4505050505050503868929eee149b4bd2126855505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b61115f858585858533610bc3565b5050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360149054906101000a900467ffffffffffffffff1681565b61271081565b5f803068929eee149b4bd2126854036111cb5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f8085815481106111eb576111ea6140d1565b5b905f5260205f209060080201604051806101000160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054806020026020016040519081016040528092919081815260200182805480156113d857602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161138f575b50505050508152602001600582015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160068201548152602001600782015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806060015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114dc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6114e786866123a9565b90505f60045f8381526020019081526020015f2090505f898981019061150d91906144bd565b90505f81602001518060200190518101906115289190614518565b90505f61271067ffffffffffffffff16846002015483611548919061412b565b6115529190614199565b90505f81111561176f57600160028111156115705761156f613820565b5b845f015f9054906101000a900460ff16600281111561159257611591613820565b5b14806115d057505f60028111156115ac576115ab613820565b5b845f015f9054906101000a900460ff1660028111156115ce576115cd613820565b5b145b1561162b57611626835f015182865f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128889092919063ffffffff16565b6116fd565b60028081111561163e5761163d613820565b5b845f015f9054906101000a900460ff1660028111156116605761165f613820565b5b036116fc57835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30855f01518760030154856040518563ffffffff1660e01b81526004016116ce9493929190614566565b5f604051808303815f87803b1580156116e5575f80fd5b505af11580156116f7573d5f803e3d5ffd5b505050505b5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16898b7f42ca2b02f2bdb76fff6e99ea9a7b4d9767b45bdd42d6be831eeb9f3d5cb20b17846040516117669190613d22565b60405180910390a45b5f8087608001518b81518110611788576117876140d1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663474f5a44866040516020016117bc9190614656565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016117e791906146ae565b60408051808303815f875af1158015611802573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182691906146e2565b915091505f820361187257338e8e6040517f9ecd71a900000000000000000000000000000000000000000000000000000000815260040161186993929190614256565b60405180910390fd5b82866001015f82825461188591906141c9565b9250508190555081819950995050505050505050503868929eee149b4bd212685594509492505050565b6118b7613659565b335f73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156119ab575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe9fbb80826040518263ffffffff1660e01b815260040161196a9190613c50565b602060405180830381865afa158015611985573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a991906142bb565b155b156119e2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3068929eee149b4bd212685403611a005763ab143c065f526004601cfd5b3068929eee149b4bd21268555f611a5985858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506128d1565b806020019051810190611a6c9190614a80565b9050611a7a815f015161296a565b5f8060018160018154018082558091505003905f5260205f20906008020190508160e00151816007015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550815f0151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160a00151600360149054906101000a900467ffffffffffffffff16611b4b9190614ac7565b816005015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160c001518160060181905550611bb17fe67157950000000000000000000000000000000000000000000000000000000083602001516001612a45565b815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c217fe2089f790000000000000000000000000000000000000000000000000000000083606001516001612a45565b816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c738260800151835f0151612a67565b816004019080519060200190611c8a92919061370f565b505f73ffffffffffffffffffffffffffffffffffffffff1682604001516020015173ffffffffffffffffffffffffffffffffffffffff1614611cfb57611cf67f5912b89c0000000000000000000000000000000000000000000000000000000083604001516001612a45565b611de4565b805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f5912b89c000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401611d769190614b3c565b602060405180830381865afa158015611d91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db591906142bb565b611dbf575f611de3565b805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b5b816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff16816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611eda577f5912b89c000000000000000000000000000000000000000000000000000000005f6040517fe1c44448000000000000000000000000000000000000000000000000000000008152600401611ed1929190614b55565b60405180910390fd5b805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816007015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660015f80549050611f5e91906141c9565b7f116812d3ad4507d72f2c428b63246d594ca055a1dc119394285504c23d1f34cd8460040180549050856001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876003015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516120039493929190614b7c565b60405180910390a480604051806101000160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054806020026020016040519081016040528092919081815260200182805480156121ed57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116121a4575b50505050508152602001600582015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160068201548152602001600782015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050935050503868929eee149b4bd21268555092915050565b6122a5612372565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122f0612372565b63389a75e1600c52805f526020600c20805442111561231657636f5e88185f526004601cfd5b5f815550612323816127c2565b50565b61232e612372565b8060601b61234357637448fbae5f526004601cfd5b61234c816127c2565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146123a7576382b429005f526004601cfd5b565b5f82826040516020016123bd929190614bdf565b60405160208183030381529060405280519060200120905092915050565b5f600160028111156123f0576123ef613820565b5b825f015f9054906101000a900460ff16600281111561241257612411613820565b5b148061245057505f600281111561242c5761242b613820565b5b825f015f9054906101000a900460ff16600281111561244e5761244d613820565b5b145b156124f757815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016124b19190613c50565b602060405180830381865afa1580156124cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f09190614518565b90506125dc565b60028081111561250a57612509613820565b5b825f015f9054906101000a900460ff16600281111561252c5761252b613820565b5b036125d857815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084600301546040518363ffffffff1660e01b8152600401612592929190614c0a565b602060405180830381865afa1580156125ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125d19190614518565b90506125dc565b5f90505b919050565b600160028111156125f5576125f4613820565b5b825f015f9054906101000a900460ff16600281111561261757612616613820565b5b148061265557505f600281111561263157612630613820565b5b825f015f9054906101000a900460ff16600281111561265357612652613820565b5b145b156126ce576126c960035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682845f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128889092919063ffffffff16565b6127be565b6002808111156126e1576126e0613820565b5b825f015f9054906101000a900460ff16600281111561270357612702613820565b5b036127bd57815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154856040518563ffffffff1660e01b815260040161278f9493929190614566565b5f604051808303815f87803b1580156127a6575f80fd5b505af11580156127b8573d5f803e3d5ffd5b505050505b5b5050565b6127ca612f75565b1561282f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550612885565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166128c8576390b8ec185f526004601cfd5b5f603452505050565b60608151156129655760405190506020810160048301805184518501811983525b8086101561294b576001860195508551601f1a8061293b576001870196508651601f1a5f198652607f811161292957600181013887395b6001607f821601860195505050612946565b808553600185019450505b6128f2565b81835260208501840385525f845260208401604052505050505b919050565b6129947fe49cedd70000000000000000000000000000000000000000000000000000000082612f79565b8073ffffffffffffffffffffffffffffffffffffffff1663fe9fbb80336040518263ffffffff1660e01b81526004016129cd9190613c50565b602060405180830381865afa1580156129e8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0c91906142bb565b612a42576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b5f612a54848460200151612f79565b612a5e8383613070565b90509392505050565b6060825167ffffffffffffffff811115612a8457612a83614336565b5b604051908082528060200260200182016040528015612ab25781602001602082028036833780820191505090505b5090505f5b8351811015612f6e57612b087fa921670500000000000000000000000000000000000000000000000000000000858381518110612af757612af66140d1565b5b602002602001015160200151612f79565b838181518110612b1b57612b1a6140d1565b5b60200260200101515f0151612ba7577fa921670500000000000000000000000000000000000000000000000000000000848281518110612b5e57612b5d6140d1565b5b6020026020010151602001516040517fe1c44448000000000000000000000000000000000000000000000000000000008152600401612b9e929190614b55565b60405180910390fd5b612bec7fa921670500000000000000000000000000000000000000000000000000000000858381518110612bde57612bdd6140d1565b5b60200260200101515f612a45565b828281518110612bff57612bfe6140d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f828281518110612c4d57612c4c6140d1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16634e7165a2868481518110612c8357612c826140d1565b5b6020026020010151604001516040518263ffffffff1660e01b8152600401612cab91906146ae565b5f60405180830381865afa158015612cc5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612ced9190614c31565b90505f815114612ec2575f80612d028361312c565b915091508573ffffffffffffffffffffffffffffffffffffffff1663fa4ca9b1836040518263ffffffff1660e01b8152600401612d3f91906146ae565b6020604051808303815f875af1158015612d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7f91906142bb565b612db5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663fa4ca9b1846040518263ffffffff1660e01b8152600401612dee91906146ae565b6020604051808303815f875af1158015612e0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e2e91906142bb565b612e64576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83806020019051810190612e799190614d2c565b9050612ebe60015f80549050612e8f91906141c9565b86836020015185855f01518d8b81518110612ead57612eac6140d1565b5b602002602001015160400151613428565b5050505b828281518110612ed557612ed46140d1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663439fab91868481518110612f0b57612f0a6140d1565b5b6020026020010151604001516040518263ffffffff1660e01b8152600401612f3391906146ae565b5f604051808303815f87803b158015612f4a575f80fd5b505af1158015612f5c573d5f803e3d5ffd5b50505050508080600101915050612ab7565b5092915050565b5f90565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061302857508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a7836040518263ffffffff1660e01b8152600401612fe79190614b3c565b602060405180830381865afa158015613002573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302691906142bb565b155b1561306c5781816040517fe1c44448000000000000000000000000000000000000000000000000000000008152600401613063929190614b55565b60405180910390fd5b5050565b5f825f01516130835782602001516130a7565b6130a6836020015173ffffffffffffffffffffffffffffffffffffffff166135a4565b5b9050825f015180156130b65750815b15613126578073ffffffffffffffffffffffffffffffffffffffff1663439fab9184604001516040518263ffffffff1660e01b81526004016130f891906146ae565b5f604051808303815f87803b15801561310f575f80fd5b505af1158015613121573d5f803e3d5ffd5b505050505b92915050565b60605f80838060200190518101906131449190614d2c565b90506001600281111561315a57613159613820565b5b815f015160028111156131705761316f613820565b5b14806131a257505f600281111561318a57613189613820565b5b815f015160028111156131a05761319f613820565b5b145b156132ab575f81606001518060200190518101906131c09190614dac565b90505f61271067ffffffffffffffff16600360149054906101000a900467ffffffffffffffff1667ffffffffffffffff16835f01516131ff919061412b565b6132099190614199565b90505f60405180602001604052808381525090508060405160200161322e9190614df1565b604051602081830303815290604052846060018190525030846040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360405160200161328e9190614e6a565b604051602081830303815290604052829550955050505050613423565b6002808111156132be576132bd613820565b5b815f015160028111156132d4576132d3613820565b5b036133f1575f81606001518060200190518101906132f29190614f07565b90505f61271067ffffffffffffffff16600360149054906101000a900467ffffffffffffffff1667ffffffffffffffff168360200151613332919061412b565b61333c9190614199565b90505f6040518060600160405280845f0151815260200183815260200184604001518152509050806040516020016133749190614f9b565b604051602081830303815290604052846060018190525030846040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050836040516020016133d49190614e6a565b604051602081830303815290604052829550955050505050613423565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b60605f60028081111561343e5761343d613820565b5b84600281111561345157613450613820565b5b03613474578280602001905181019061346a9190614fbb565b5080915050613478565b8291505b5f6040518060a0016040528086600281111561349757613496613820565b5b81526020018873ffffffffffffffffffffffffffffffffffffffff168152602001878152602001600360149054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020018381525090508060045f6134f88c8c6123a9565b81526020019081526020015f205f820151815f015f6101000a81548160ff0219169083600281111561352d5761352c613820565b5b02179055506020820151815f0160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600101556060820151816002015560808201518160030155905050505050505050505050565b5f6135af5f836135b6565b9050919050565b5f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c84f09050806135fd5763301164255f526004601cfd5b5f60215292915050565b6040518060a001604052805f600281111561362557613624613820565b5b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b6040518061010001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff168152602001606081526020015f67ffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b828054828255905f5260205f20908101928215613785579160200282015b82811115613784578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061372d565b5b5090506137929190613796565b5090565b5b808211156137ad575f815f905550600101613797565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6137d4816137c2565b81146137de575f80fd5b50565b5f813590506137ef816137cb565b92915050565b5f6020828403121561380a576138096137ba565b5b5f613817848285016137e1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6003811061385e5761385d613820565b5b50565b5f81905061386e8261384d565b919050565b5f61387d82613861565b9050919050565b61388d81613873565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6138bc82613893565b9050919050565b6138cc816138b2565b82525050565b5f819050919050565b6138e4816138d2565b82525050565b60a082015f8201516138fe5f850182613884565b50602082015161391160208501826138c3565b50604082015161392460408501826138db565b50606082015161393760608501826138db565b50608082015161394a60808501826138db565b50505050565b5f60a0820190506139635f8301846138ea565b92915050565b613972816138d2565b811461397c575f80fd5b50565b5f8135905061398d81613969565b92915050565b5f602082840312156139a8576139a76137ba565b5b5f6139b58482850161397f565b91505092915050565b5f819050919050565b5f6139e16139dc6139d784613893565b6139be565b613893565b9050919050565b5f6139f2826139c7565b9050919050565b5f613a03826139e8565b9050919050565b613a13816139f9565b82525050565b5f613a23826139e8565b9050919050565b613a3381613a19565b82525050565b5f613a43826139e8565b9050919050565b613a5381613a39565b82525050565b5f613a63826139c7565b9050919050565b5f613a7482613a59565b9050919050565b613a8481613a6a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f613abd826139e8565b9050919050565b613acd81613ab3565b82525050565b5f613ade8383613ac4565b60208301905092915050565b5f602082019050919050565b5f613b0082613a8a565b613b0a8185613a94565b9350613b1583613aa4565b805f5b83811015613b45578151613b2c8882613ad3565b9750613b3783613aea565b925050600181019050613b18565b5085935050505092915050565b5f67ffffffffffffffff82169050919050565b613b6e81613b52565b82525050565b5f61010083015f830151613b8a5f860182613a0a565b506020830151613b9d6020860182613a2a565b506040830151613bb06040860182613a4a565b506060830151613bc36060860182613a7b565b5060808301518482036080860152613bdb8282613af6565b91505060a0830151613bf060a0860182613b65565b5060c0830151613c0360c08601826138db565b5060e0830151613c1660e08601826138c3565b508091505092915050565b5f6020820190508181035f830152613c398184613b74565b905092915050565b613c4a816138b2565b82525050565b5f602082019050613c635f830184613c41565b92915050565b613c7281613b52565b8114613c7c575f80fd5b50565b5f81359050613c8d81613c69565b92915050565b5f60208284031215613ca857613ca76137ba565b5b5f613cb584828501613c7f565b91505092915050565b613cc7816138b2565b8114613cd1575f80fd5b50565b5f81359050613ce281613cbe565b92915050565b5f60208284031215613cfd57613cfc6137ba565b5b5f613d0a84828501613cd4565b91505092915050565b613d1c816138d2565b82525050565b5f602082019050613d355f830184613d13565b92915050565b5f8060408385031215613d5157613d506137ba565b5b5f613d5e8582860161397f565b9250506020613d6f8582860161397f565b9150509250929050565b613d8281613873565b82525050565b5f60a082019050613d9b5f830188613d79565b613da86020830187613c41565b613db56040830186613d13565b613dc26060830185613d13565b613dcf6080830184613d13565b9695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613dfa57613df9613dd9565b5b8235905067ffffffffffffffff811115613e1757613e16613ddd565b5b602083019150836001820283011115613e3357613e32613de1565b5b9250929050565b5f805f805f8060a08789031215613e5457613e536137ba565b5b5f613e6189828a0161397f565b9650506020613e7289828a0161397f565b9550506040613e8389828a01613cd4565b945050606087013567ffffffffffffffff811115613ea457613ea36137be565b5b613eb089828a01613de5565b93509350506080613ec389828a01613cd4565b9150509295509295509295565b5f613eda826139e8565b9050919050565b613eea81613ed0565b82525050565b5f602082019050613f035f830184613ee1565b92915050565b5f805f805f60808688031215613f2257613f216137ba565b5b5f613f2f8882890161397f565b9550506020613f408882890161397f565b9450506040613f5188828901613cd4565b935050606086013567ffffffffffffffff811115613f7257613f716137be565b5b613f7e88828901613de5565b92509250509295509295909350565b5f613f97826139e8565b9050919050565b613fa781613f8d565b82525050565b5f602082019050613fc05f830184613f9e565b92915050565b613fcf81613b52565b82525050565b5f602082019050613fe85f830184613fc6565b92915050565b5f805f8060608587031215614006576140056137ba565b5b5f85013567ffffffffffffffff811115614023576140226137be565b5b61402f87828801613de5565b945094505060206140428782880161397f565b92505060406140538782880161397f565b91505092959194509250565b5f6040820190506140725f830185613d13565b61407f6020830184613c41565b9392505050565b5f806020838503121561409c5761409b6137ba565b5b5f83013567ffffffffffffffff8111156140b9576140b86137be565b5b6140c585828601613de5565b92509250509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614135826138d2565b9150614140836138d2565b925082820261414e816138d2565b91508282048414831517614165576141646140fe565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141a3826138d2565b91506141ae836138d2565b9250826141be576141bd61416c565b5b828204905092915050565b5f6141d3826138d2565b91506141de836138d2565b92508282039050818111156141f6576141f56140fe565b5b92915050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f61423583856141fc565b935061424283858461420c565b61424b8361421a565b840190509392505050565b5f6040820190506142695f830186613c41565b818103602083015261427c81848661422a565b9050949350505050565b5f8115159050919050565b61429a81614286565b81146142a4575f80fd5b50565b5f815190506142b581614291565b92915050565b5f602082840312156142d0576142cf6137ba565b5b5f6142dd848285016142a7565b91505092915050565b5f6080820190506142f95f830188613d13565b6143066020830187613d13565b6143136040830186613c41565b818103606083015261432681848661422a565b90509695505050505050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61436c8261421a565b810181811067ffffffffffffffff8211171561438b5761438a614336565b5b80604052505050565b5f61439d6137b1565b90506143a98282614363565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156143d0576143cf614336565b5b6143d98261421a565b9050602081019050919050565b5f6143f86143f3846143b6565b614394565b905082815260208101848484011115614414576144136143b2565b5b61441f84828561420c565b509392505050565b5f82601f83011261443b5761443a613dd9565b5b813561444b8482602086016143e6565b91505092915050565b5f6040828403121561446957614468614332565b5b6144736040614394565b90505f61448284828501613cd4565b5f83015250602082013567ffffffffffffffff8111156144a5576144a46143ae565b5b6144b184828501614427565b60208301525092915050565b5f602082840312156144d2576144d16137ba565b5b5f82013567ffffffffffffffff8111156144ef576144ee6137be565b5b6144fb84828501614454565b91505092915050565b5f8151905061451281613969565b92915050565b5f6020828403121561452d5761452c6137ba565b5b5f61453a84828501614504565b91505092915050565b50565b5f6145515f836141fc565b915061455c82614543565b5f82019050919050565b5f60a0820190506145795f830187613c41565b6145866020830186613c41565b6145936040830185613d13565b6145a06060830184613d13565b81810360808301526145b181614546565b905095945050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6145ee826145bc565b6145f881856145c6565b93506146088185602086016145d6565b6146118161421a565b840191505092915050565b5f604083015f8301516146315f8601826138c3565b506020830151848203602086015261464982826145e4565b9150508091505092915050565b5f6020820190508181035f83015261466e818461461c565b905092915050565b5f614680826145bc565b61468a81856141fc565b935061469a8185602086016145d6565b6146a38161421a565b840191505092915050565b5f6020820190508181035f8301526146c68184614676565b905092915050565b5f815190506146dc81613cbe565b92915050565b5f80604083850312156146f8576146f76137ba565b5b5f61470585828601614504565b9250506020614716858286016146ce565b9150509250929050565b5f61472a82613893565b9050919050565b5f61473b82614720565b9050919050565b61474b81614731565b8114614755575f80fd5b50565b5f8151905061476681614742565b92915050565b5f61477e614779846143b6565b614394565b90508281526020810184848401111561479a576147996143b2565b5b6147a58482856145d6565b509392505050565b5f82601f8301126147c1576147c0613dd9565b5b81516147d184826020860161476c565b91505092915050565b5f606082840312156147ef576147ee614332565b5b6147f96060614394565b90505f614808848285016142a7565b5f83015250602061481b848285016146ce565b602083015250604082015167ffffffffffffffff81111561483f5761483e6143ae565b5b61484b848285016147ad565b60408301525092915050565b5f67ffffffffffffffff82111561487157614870614336565b5b602082029050602081019050919050565b5f61489461488f84614857565b614394565b905080838252602082019050602084028301858111156148b7576148b6613de1565b5b835b818110156148fe57805167ffffffffffffffff8111156148dc576148db613dd9565b5b8086016148e989826147da565b855260208501945050506020810190506148b9565b5050509392505050565b5f82601f83011261491c5761491b613dd9565b5b815161492c848260208601614882565b91505092915050565b5f8151905061494381613c69565b92915050565b5f610100828403121561495f5761495e614332565b5b61496a610100614394565b90505f61497984828501614758565b5f83015250602082015167ffffffffffffffff81111561499c5761499b6143ae565b5b6149a8848285016147da565b602083015250604082015167ffffffffffffffff8111156149cc576149cb6143ae565b5b6149d8848285016147da565b604083015250606082015167ffffffffffffffff8111156149fc576149fb6143ae565b5b614a08848285016147da565b606083015250608082015167ffffffffffffffff811115614a2c57614a2b6143ae565b5b614a3884828501614908565b60808301525060a0614a4c84828501614935565b60a08301525060c0614a6084828501614504565b60c08301525060e0614a74848285016146ce565b60e08301525092915050565b5f60208284031215614a9557614a946137ba565b5b5f82015167ffffffffffffffff811115614ab257614ab16137be565b5b614abe84828501614949565b91505092915050565b5f614ad182613b52565b9150614adc83613b52565b9250828201905067ffffffffffffffff811115614afc57614afb6140fe565b5b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614b3681614b02565b82525050565b5f602082019050614b4f5f830184614b2d565b92915050565b5f604082019050614b685f830185614b2d565b614b756020830184613c41565b9392505050565b5f608082019050614b8f5f830187613d13565b614b9c6020830186613c41565b614ba96040830185613c41565b614bb66060830184613c41565b95945050505050565b5f819050919050565b614bd9614bd4826138d2565b614bbf565b82525050565b5f614bea8285614bc8565b602082019150614bfa8284614bc8565b6020820191508190509392505050565b5f604082019050614c1d5f830185613c41565b614c2a6020830184613d13565b9392505050565b5f60208284031215614c4657614c456137ba565b5b5f82015167ffffffffffffffff811115614c6357614c626137be565b5b614c6f848285016147ad565b91505092915050565b60038110614c84575f80fd5b50565b5f81519050614c9581614c78565b92915050565b5f60808284031215614cb057614caf614332565b5b614cba6080614394565b90505f614cc984828501614c87565b5f830152506020614cdc848285016146ce565b6020830152506040614cf0848285016146ce565b604083015250606082015167ffffffffffffffff811115614d1457614d136143ae565b5b614d20848285016147ad565b60608301525092915050565b5f60208284031215614d4157614d406137ba565b5b5f82015167ffffffffffffffff811115614d5e57614d5d6137be565b5b614d6a84828501614c9b565b91505092915050565b5f60208284031215614d8857614d87614332565b5b614d926020614394565b90505f614da184828501614504565b5f8301525092915050565b5f60208284031215614dc157614dc06137ba565b5b5f614dce84828501614d73565b91505092915050565b602082015f820151614deb5f8501826138db565b50505050565b5f602082019050614e045f830184614dd7565b92915050565b5f608083015f830151614e1f5f860182613884565b506020830151614e3260208601826138c3565b506040830151614e4560408601826138c3565b5060608301518482036060860152614e5d82826145e4565b9150508091505092915050565b5f6020820190508181035f830152614e828184614e0a565b905092915050565b5f60608284031215614e9f57614e9e614332565b5b614ea96060614394565b90505f614eb884828501614504565b5f830152506020614ecb84828501614504565b602083015250604082015167ffffffffffffffff811115614eef57614eee6143ae565b5b614efb848285016147ad565b60408301525092915050565b5f60208284031215614f1c57614f1b6137ba565b5b5f82015167ffffffffffffffff811115614f3957614f386137be565b5b614f4584828501614e8a565b91505092915050565b5f606083015f830151614f635f8601826138db565b506020830151614f7660208601826138db565b5060408301518482036040860152614f8e82826145e4565b9150508091505092915050565b5f6020820190508181035f830152614fb38184614f4e565b905092915050565b5f8060408385031215614fd157614fd06137ba565b5b5f614fde85828601614504565b925050602083015167ffffffffffffffff811115614fff57614ffe6137be565b5b61500b858286016147ad565b915050925092905056fea264697066735822122043ccaf0877e1788e8575053e71e189445c2f8a85b965b800cee903aac99bcedb64736f6c634300081a0033";
29
+ const Tf = "0x60806040526103e8600360146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555034801561003a575f80fd5b506040516152f63803806152f6833981810160405281019061005c919061026b565b61006b336100f260201b60201c565b8160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506102a9565b6101006101ce60201b60201c565b15610178577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561013a57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506101cb565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101ff826101d6565b9050919050565b5f610210826101f5565b9050919050565b61022081610206565b811461022a575f80fd5b50565b5f8151905061023b81610217565b92915050565b61024a816101f5565b8114610254575f80fd5b50565b5f8151905061026581610241565b92915050565b5f8060408385031215610281576102806101d2565b5b5f61028e8582860161022d565b925050602061029f85828601610257565b9150509250929050565b615040806102b65f395ff3fe60806040526004361061014a575f3560e01c80637b103999116100b5578063dd98558c1161006e578063dd98558c146103fa578063e21ff73114610437578063eccc19a614610473578063f04e283e1461049b578063f2fde38b146104b7578063fee81cf4146104d35761014a565b80637b1039991461030c5780638da5cb5b146103365780638fe4f52314610360578063a92647dc1461037c578063b0e21e8a146103a6578063d73792a9146103d05761014a565b806354d1f13d1161010757806354d1f13d1461024a5780635edb9eb0146102545780635f32c23e1461027e57806360777795146102a6578063715018a6146102e6578063730f9c57146102f05761014a565b80630250e72b1461014e57806313c8e2de1461018a57806325692962146101c657806339a51be5146101d057806343bc42d3146101fa57806346877b1a14610222575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f91906137ea565b61050f565b6040516101819190613945565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190613988565b6105e6565b6040516101bd9190613c16565b60405180910390f35b6101ce61088e565b005b3480156101db575f80fd5b506101e46108df565b6040516101f19190613c45565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190613c88565b610904565b005b34801561022d575f80fd5b5061024860048036038101906102439190613cdd565b610938565b005b610252610983565b005b34801561025f575f80fd5b506102686109bc565b6040516102759190613d17565b60405180910390f35b348015610289575f80fd5b506102a4600480360381019061029f9190613d30565b6109c7565b005b3480156102b1575f80fd5b506102cc60048036038101906102c791906137ea565b610b53565b6040516102dd959493929190613d7d565b60405180910390f35b6102ee610bb0565b005b61030a60048036038101906103059190613e2f565b610bc3565b005b348015610317575f80fd5b50610320611104565b60405161032d9190613ee5565b60405180910390f35b348015610341575f80fd5b5061034a611129565b6040516103579190613c45565b60405180910390f35b61037a60048036038101906103759190613efe565b611151565b005b348015610387575f80fd5b50610390611166565b60405161039d9190613fa2565b60405180910390f35b3480156103b1575f80fd5b506103ba61118b565b6040516103c79190613fca565b60405180910390f35b3480156103db575f80fd5b506103e46111a5565b6040516103f19190613fca565b60405180910390f35b348015610405575f80fd5b50610420600480360381019061041b9190613fe3565b6111ab565b60405161042e929190614054565b60405180910390f35b348015610442575f80fd5b5061045d6004803603810190610458919061407b565b6118af565b60405161046a9190613c16565b60405180910390f35b34801561047e575f80fd5b5061049960048036038101906104949190613cdd565b61229d565b005b6104b560048036038101906104b09190613cdd565b6122e8565b005b6104d160048036038101906104cc9190613cdd565b612326565b005b3480156104de575f80fd5b506104f960048036038101906104f49190613cdd565b61234f565b6040516105069190613d17565b60405180910390f35b6105176135fc565b60045f8381526020019081526020015f206040518060a00160405290815f82015f9054906101000a900460ff16600281111561055657610555613815565b5b600281111561056857610567613815565b5b81526020015f820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820154815250509050919050565b6105ee61364e565b5f8281548110610601576106006140c6565b5b905f5260205f209060080201604051806101000160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054806020026020016040519081016040528092919081815260200182805480156107ee57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116107a5575b50505050508152602001600582015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160068201548152602001600782015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b5f610897612368565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61090c612372565b80600360146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b610940612372565b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f8080549050905090565b3068929eee149b4bd2126854036109e55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f6109fc83836123a9565b90505f60045f8381526020019081526020015f2090505f816002015461271067ffffffffffffffff168360010154610a349190614120565b610a3e919061418e565b90505f610a4a836123db565b905081811115610b3f575f8282610a6191906141be565b90505f61271067ffffffffffffffff16856002015483610a819190614120565b610a8b919061418e565b9050610a9785826125e1565b80856001015410610ac15780856001015f828254610ab591906141be565b92505081905550610acb565b5f85600101819055505b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1687897f42ca2b02f2bdb76fff6e99ea9a7b4d9767b45bdd42d6be831eeb9f3d5cb20b1784604051610b349190613d17565b60405180910390a450505b505050503868929eee149b4bd21268555050565b6004602052805f5260405f205f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905085565b610bb8612372565b610bc15f6127c2565b565b3068929eee149b4bd212685403610be15763ab143c065f526004601cfd5b3068929eee149b4bd21268555f808781548110610c0157610c006140c6565b5b905f5260205f20906008020190505f610c1a88886123a9565b90505f60045f8381526020019081526020015f209050826002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de8588886040518463ffffffff1660e01b8152600401610c909392919061424b565b602060405180830381865afa158015610cab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccf91906142b0565b610d05576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663703b69008a8a878a8a6040518663ffffffff1660e01b8152600401610d699594939291906142db565b6020604051808303815f875af1158015610d85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da991906142b0565b610ddf576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8073ffffffffffffffffffffffffffffffffffffffff16825f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e3c575f610e46565b610e45826123db565b5b9050836004018981548110610e5e57610e5d6140c6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb1757cf8689896040518463ffffffff1660e01b8152600401610ec29392919061424b565b6020604051808303815f875af1158015610ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0291906142b0565b610f47578487876040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f3e9392919061424b565b60405180910390fd5b5f8073ffffffffffffffffffffffffffffffffffffffff16835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610fa4575f610fae565b610fad836123db565b5b90505f818311610fbe575f610fcb565b8183610fca91906141be565b5b90505f61271067ffffffffffffffff16856002015483610feb9190614120565b610ff5919061418e565b90505f8111156110955761100985826125e1565b80856001015f82825461101c91906141be565b9250508190555060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c8e7f42ca2b02f2bdb76fff6e99ea9a7b4d9767b45bdd42d6be831eeb9f3d5cb20b178460405161108c9190613d17565b60405180910390a45b8773ffffffffffffffffffffffffffffffffffffffff168c8e7f0f29bbf4ce25d2346bbeb8a898e24e5d6d7d1d19bb895e71faecac833b2595478e8e8e6040516110e19392919061424b565b60405180910390a4505050505050503868929eee149b4bd2126855505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b61115f858585858533610bc3565b5050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360149054906101000a900467ffffffffffffffff1681565b61271081565b5f803068929eee149b4bd2126854036111cb5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f8085815481106111eb576111ea6140c6565b5b905f5260205f209060080201604051806101000160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054806020026020016040519081016040528092919081815260200182805480156113d857602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161138f575b50505050508152602001600582015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160068201548152602001600782015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806060015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114dc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6114e786866123a9565b90505f60045f8381526020019081526020015f2090505f898981019061150d91906144b2565b90505f8160200151806020019051810190611528919061450d565b90505f61271067ffffffffffffffff168460020154836115489190614120565b611552919061418e565b90505f81111561176f57600160028111156115705761156f613815565b5b845f015f9054906101000a900460ff16600281111561159257611591613815565b5b14806115d057505f60028111156115ac576115ab613815565b5b845f015f9054906101000a900460ff1660028111156115ce576115cd613815565b5b145b1561162b57611626835f015182865f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128889092919063ffffffff16565b6116fd565b60028081111561163e5761163d613815565b5b845f015f9054906101000a900460ff1660028111156116605761165f613815565b5b036116fc57835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30855f01518760030154856040518563ffffffff1660e01b81526004016116ce949392919061455b565b5f604051808303815f87803b1580156116e5575f80fd5b505af11580156116f7573d5f803e3d5ffd5b505050505b5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16898b7f42ca2b02f2bdb76fff6e99ea9a7b4d9767b45bdd42d6be831eeb9f3d5cb20b17846040516117669190613d17565b60405180910390a45b5f8087608001518b81518110611788576117876140c6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663474f5a44866040516020016117bc919061464b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016117e791906146a3565b60408051808303815f875af1158015611802573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182691906146d7565b915091505f820361187257338e8e6040517f9ecd71a90000000000000000000000000000000000000000000000000000000081526004016118699392919061424b565b60405180910390fd5b82866001015f82825461188591906141be565b9250508190555081819950995050505050505050503868929eee149b4bd212685594509492505050565b6118b761364e565b335f73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156119ab575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe9fbb80826040518263ffffffff1660e01b815260040161196a9190613c45565b602060405180830381865afa158015611985573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a991906142b0565b155b156119e2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3068929eee149b4bd212685403611a005763ab143c065f526004601cfd5b3068929eee149b4bd21268555f611a5985858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506128d1565b806020019051810190611a6c9190614a75565b9050611a7a815f015161296a565b5f8060018160018154018082558091505003905f5260205f20906008020190508160e00151816007015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550815f0151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160a00151600360149054906101000a900467ffffffffffffffff16611b4b9190614abc565b816005015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160c001518160060181905550611bb17fe67157950000000000000000000000000000000000000000000000000000000083602001516001612a45565b815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c217fe2089f790000000000000000000000000000000000000000000000000000000083606001516001612a45565b816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c738260800151835f0151612a67565b816004019080519060200190611c8a929190613704565b505f73ffffffffffffffffffffffffffffffffffffffff1682604001516020015173ffffffffffffffffffffffffffffffffffffffff1614611cfb57611cf67f5912b89c0000000000000000000000000000000000000000000000000000000083604001516001612a45565b611de4565b805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f5912b89c000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401611d769190614b31565b602060405180830381865afa158015611d91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db591906142b0565b611dbf575f611de3565b805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b5b816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff16816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611eda577f5912b89c000000000000000000000000000000000000000000000000000000005f6040517fe1c44448000000000000000000000000000000000000000000000000000000008152600401611ed1929190614b4a565b60405180910390fd5b805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816007015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660015f80549050611f5e91906141be565b7f116812d3ad4507d72f2c428b63246d594ca055a1dc119394285504c23d1f34cd8460040180549050856001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876003015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516120039493929190614b71565b60405180910390a480604051806101000160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482018054806020026020016040519081016040528092919081815260200182805480156121ed57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116121a4575b50505050508152602001600582015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160068201548152602001600782015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050935050503868929eee149b4bd21268555092915050565b6122a5612372565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122f0612372565b63389a75e1600c52805f526020600c20805442111561231657636f5e88185f526004601cfd5b5f815550612323816127c2565b50565b61232e612372565b8060601b61234357637448fbae5f526004601cfd5b61234c816127c2565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146123a7576382b429005f526004601cfd5b565b5f82826040516020016123bd929190614bd4565b60405160208183030381529060405280519060200120905092915050565b5f600160028111156123f0576123ef613815565b5b825f015f9054906101000a900460ff16600281111561241257612411613815565b5b148061245057505f600281111561242c5761242b613815565b5b825f015f9054906101000a900460ff16600281111561244e5761244d613815565b5b145b156124f757815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016124b19190613c45565b602060405180830381865afa1580156124cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f0919061450d565b90506125dc565b60028081111561250a57612509613815565b5b825f015f9054906101000a900460ff16600281111561252c5761252b613815565b5b036125d857815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084600301546040518363ffffffff1660e01b8152600401612592929190614bff565b602060405180830381865afa1580156125ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125d1919061450d565b90506125dc565b5f90505b919050565b600160028111156125f5576125f4613815565b5b825f015f9054906101000a900460ff16600281111561261757612616613815565b5b148061265557505f600281111561263157612630613815565b5b825f015f9054906101000a900460ff16600281111561265357612652613815565b5b145b156126ce576126c960035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682845f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128889092919063ffffffff16565b6127be565b6002808111156126e1576126e0613815565b5b825f015f9054906101000a900460ff16600281111561270357612702613815565b5b036127bd57815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154856040518563ffffffff1660e01b815260040161278f949392919061455b565b5f604051808303815f87803b1580156127a6575f80fd5b505af11580156127b8573d5f803e3d5ffd5b505050505b5b5050565b6127ca612f75565b1561282f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550612885565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166128c8576390b8ec185f526004601cfd5b5f603452505050565b60608151156129655760405190506020810160048301805184518501811983525b8086101561294b576001860195508551601f1a8061293b576001870196508651601f1a5f198652607f811161292957600181013887395b6001607f821601860195505050612946565b808553600185019450505b6128f2565b81835260208501840385525f845260208401604052505050505b919050565b6129947fe49cedd70000000000000000000000000000000000000000000000000000000082612f79565b8073ffffffffffffffffffffffffffffffffffffffff1663fe9fbb80336040518263ffffffff1660e01b81526004016129cd9190613c45565b602060405180830381865afa1580156129e8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0c91906142b0565b612a42576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b5f612a54848460200151612f79565b612a5e8383613070565b90509392505050565b6060825167ffffffffffffffff811115612a8457612a8361432b565b5b604051908082528060200260200182016040528015612ab25781602001602082028036833780820191505090505b5090505f5b8351811015612f6e57612b087fa921670500000000000000000000000000000000000000000000000000000000858381518110612af757612af66140c6565b5b602002602001015160200151612f79565b838181518110612b1b57612b1a6140c6565b5b60200260200101515f0151612ba7577fa921670500000000000000000000000000000000000000000000000000000000848281518110612b5e57612b5d6140c6565b5b6020026020010151602001516040517fe1c44448000000000000000000000000000000000000000000000000000000008152600401612b9e929190614b4a565b60405180910390fd5b612bec7fa921670500000000000000000000000000000000000000000000000000000000858381518110612bde57612bdd6140c6565b5b60200260200101515f612a45565b828281518110612bff57612bfe6140c6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f828281518110612c4d57612c4c6140c6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16634e7165a2868481518110612c8357612c826140c6565b5b6020026020010151604001516040518263ffffffff1660e01b8152600401612cab91906146a3565b5f60405180830381865afa158015612cc5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612ced9190614c26565b90505f815114612ec2575f80612d028361312c565b915091508573ffffffffffffffffffffffffffffffffffffffff1663fa4ca9b1836040518263ffffffff1660e01b8152600401612d3f91906146a3565b6020604051808303815f875af1158015612d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7f91906142b0565b612db5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663fa4ca9b1846040518263ffffffff1660e01b8152600401612dee91906146a3565b6020604051808303815f875af1158015612e0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e2e91906142b0565b612e64576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83806020019051810190612e799190614d21565b9050612ebe60015f80549050612e8f91906141be565b86836020015185855f01518d8b81518110612ead57612eac6140c6565b5b602002602001015160400151613428565b5050505b828281518110612ed557612ed46140c6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663439fab91868481518110612f0b57612f0a6140c6565b5b6020026020010151604001516040518263ffffffff1660e01b8152600401612f3391906146a3565b5f604051808303815f87803b158015612f4a575f80fd5b505af1158015612f5c573d5f803e3d5ffd5b50505050508080600101915050612ab7565b5092915050565b5f90565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061302857508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a7836040518263ffffffff1660e01b8152600401612fe79190614b31565b602060405180830381865afa158015613002573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302691906142b0565b155b1561306c5781816040517fe1c44448000000000000000000000000000000000000000000000000000000008152600401613063929190614b4a565b60405180910390fd5b5050565b5f825f01516130835782602001516130a7565b6130a6836020015173ffffffffffffffffffffffffffffffffffffffff16613599565b5b9050825f015180156130b65750815b15613126578073ffffffffffffffffffffffffffffffffffffffff1663439fab9184604001516040518263ffffffff1660e01b81526004016130f891906146a3565b5f604051808303815f87803b15801561310f575f80fd5b505af1158015613121573d5f803e3d5ffd5b505050505b92915050565b60605f80838060200190518101906131449190614d21565b90506001600281111561315a57613159613815565b5b815f015160028111156131705761316f613815565b5b14806131a257505f600281111561318a57613189613815565b5b815f015160028111156131a05761319f613815565b5b145b156132ab575f81606001518060200190518101906131c09190614da1565b90505f61271067ffffffffffffffff16600360149054906101000a900467ffffffffffffffff1667ffffffffffffffff16835f01516131ff9190614120565b613209919061418e565b90505f60405180602001604052808381525090508060405160200161322e9190614de6565b604051602081830303815290604052846060018190525030846040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360405160200161328e9190614e5f565b604051602081830303815290604052829550955050505050613423565b6002808111156132be576132bd613815565b5b815f015160028111156132d4576132d3613815565b5b036133f1575f81606001518060200190518101906132f29190614efc565b90505f61271067ffffffffffffffff16600360149054906101000a900467ffffffffffffffff1667ffffffffffffffff1683602001516133329190614120565b61333c919061418e565b90505f6040518060600160405280845f0151815260200183815260200184604001518152509050806040516020016133749190614f90565b604051602081830303815290604052846060018190525030846040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050836040516020016133d49190614e5f565b604051602081830303815290604052829550955050505050613423565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f60028081111561343c5761343b613815565b5b83600281111561344f5761344e613815565b5b0361346e57818060200190518101906134689190614fb0565b50809150505b5f6040518060a0016040528085600281111561348d5761348c613815565b5b81526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001600360149054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020018381525090508060045f6134ee8b8b6123a9565b81526020019081526020015f205f820151815f015f6101000a81548160ff0219169083600281111561352357613522613815565b5b02179055506020820151815f0160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816001015560608201518160020155608082015181600301559050505050505050505050565b5f6135a45f836135ab565b9050919050565b5f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c84f09050806135f25763301164255f526004601cfd5b5f60215292915050565b6040518060a001604052805f600281111561361a57613619613815565b5b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b6040518061010001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff168152602001606081526020015f67ffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b828054828255905f5260205f2090810192821561377a579160200282015b82811115613779578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613722565b5b509050613787919061378b565b5090565b5b808211156137a2575f815f90555060010161378c565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6137c9816137b7565b81146137d3575f80fd5b50565b5f813590506137e4816137c0565b92915050565b5f602082840312156137ff576137fe6137af565b5b5f61380c848285016137d6565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6003811061385357613852613815565b5b50565b5f81905061386382613842565b919050565b5f61387282613856565b9050919050565b61388281613868565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6138b182613888565b9050919050565b6138c1816138a7565b82525050565b5f819050919050565b6138d9816138c7565b82525050565b60a082015f8201516138f35f850182613879565b50602082015161390660208501826138b8565b50604082015161391960408501826138d0565b50606082015161392c60608501826138d0565b50608082015161393f60808501826138d0565b50505050565b5f60a0820190506139585f8301846138df565b92915050565b613967816138c7565b8114613971575f80fd5b50565b5f813590506139828161395e565b92915050565b5f6020828403121561399d5761399c6137af565b5b5f6139aa84828501613974565b91505092915050565b5f819050919050565b5f6139d66139d16139cc84613888565b6139b3565b613888565b9050919050565b5f6139e7826139bc565b9050919050565b5f6139f8826139dd565b9050919050565b613a08816139ee565b82525050565b5f613a18826139dd565b9050919050565b613a2881613a0e565b82525050565b5f613a38826139dd565b9050919050565b613a4881613a2e565b82525050565b5f613a58826139bc565b9050919050565b5f613a6982613a4e565b9050919050565b613a7981613a5f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f613ab2826139dd565b9050919050565b613ac281613aa8565b82525050565b5f613ad38383613ab9565b60208301905092915050565b5f602082019050919050565b5f613af582613a7f565b613aff8185613a89565b9350613b0a83613a99565b805f5b83811015613b3a578151613b218882613ac8565b9750613b2c83613adf565b925050600181019050613b0d565b5085935050505092915050565b5f67ffffffffffffffff82169050919050565b613b6381613b47565b82525050565b5f61010083015f830151613b7f5f8601826139ff565b506020830151613b926020860182613a1f565b506040830151613ba56040860182613a3f565b506060830151613bb86060860182613a70565b5060808301518482036080860152613bd08282613aeb565b91505060a0830151613be560a0860182613b5a565b5060c0830151613bf860c08601826138d0565b5060e0830151613c0b60e08601826138b8565b508091505092915050565b5f6020820190508181035f830152613c2e8184613b69565b905092915050565b613c3f816138a7565b82525050565b5f602082019050613c585f830184613c36565b92915050565b613c6781613b47565b8114613c71575f80fd5b50565b5f81359050613c8281613c5e565b92915050565b5f60208284031215613c9d57613c9c6137af565b5b5f613caa84828501613c74565b91505092915050565b613cbc816138a7565b8114613cc6575f80fd5b50565b5f81359050613cd781613cb3565b92915050565b5f60208284031215613cf257613cf16137af565b5b5f613cff84828501613cc9565b91505092915050565b613d11816138c7565b82525050565b5f602082019050613d2a5f830184613d08565b92915050565b5f8060408385031215613d4657613d456137af565b5b5f613d5385828601613974565b9250506020613d6485828601613974565b9150509250929050565b613d7781613868565b82525050565b5f60a082019050613d905f830188613d6e565b613d9d6020830187613c36565b613daa6040830186613d08565b613db76060830185613d08565b613dc46080830184613d08565b9695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613def57613dee613dce565b5b8235905067ffffffffffffffff811115613e0c57613e0b613dd2565b5b602083019150836001820283011115613e2857613e27613dd6565b5b9250929050565b5f805f805f8060a08789031215613e4957613e486137af565b5b5f613e5689828a01613974565b9650506020613e6789828a01613974565b9550506040613e7889828a01613cc9565b945050606087013567ffffffffffffffff811115613e9957613e986137b3565b5b613ea589828a01613dda565b93509350506080613eb889828a01613cc9565b9150509295509295509295565b5f613ecf826139dd565b9050919050565b613edf81613ec5565b82525050565b5f602082019050613ef85f830184613ed6565b92915050565b5f805f805f60808688031215613f1757613f166137af565b5b5f613f2488828901613974565b9550506020613f3588828901613974565b9450506040613f4688828901613cc9565b935050606086013567ffffffffffffffff811115613f6757613f666137b3565b5b613f7388828901613dda565b92509250509295509295909350565b5f613f8c826139dd565b9050919050565b613f9c81613f82565b82525050565b5f602082019050613fb55f830184613f93565b92915050565b613fc481613b47565b82525050565b5f602082019050613fdd5f830184613fbb565b92915050565b5f805f8060608587031215613ffb57613ffa6137af565b5b5f85013567ffffffffffffffff811115614018576140176137b3565b5b61402487828801613dda565b9450945050602061403787828801613974565b925050604061404887828801613974565b91505092959194509250565b5f6040820190506140675f830185613d08565b6140746020830184613c36565b9392505050565b5f8060208385031215614091576140906137af565b5b5f83013567ffffffffffffffff8111156140ae576140ad6137b3565b5b6140ba85828601613dda565b92509250509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61412a826138c7565b9150614135836138c7565b9250828202614143816138c7565b9150828204841483151761415a576141596140f3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614198826138c7565b91506141a3836138c7565b9250826141b3576141b2614161565b5b828204905092915050565b5f6141c8826138c7565b91506141d3836138c7565b92508282039050818111156141eb576141ea6140f3565b5b92915050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f61422a83856141f1565b9350614237838584614201565b6142408361420f565b840190509392505050565b5f60408201905061425e5f830186613c36565b818103602083015261427181848661421f565b9050949350505050565b5f8115159050919050565b61428f8161427b565b8114614299575f80fd5b50565b5f815190506142aa81614286565b92915050565b5f602082840312156142c5576142c46137af565b5b5f6142d28482850161429c565b91505092915050565b5f6080820190506142ee5f830188613d08565b6142fb6020830187613d08565b6143086040830186613c36565b818103606083015261431b81848661421f565b90509695505050505050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6143618261420f565b810181811067ffffffffffffffff821117156143805761437f61432b565b5b80604052505050565b5f6143926137a6565b905061439e8282614358565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156143c5576143c461432b565b5b6143ce8261420f565b9050602081019050919050565b5f6143ed6143e8846143ab565b614389565b905082815260208101848484011115614409576144086143a7565b5b614414848285614201565b509392505050565b5f82601f8301126144305761442f613dce565b5b81356144408482602086016143db565b91505092915050565b5f6040828403121561445e5761445d614327565b5b6144686040614389565b90505f61447784828501613cc9565b5f83015250602082013567ffffffffffffffff81111561449a576144996143a3565b5b6144a68482850161441c565b60208301525092915050565b5f602082840312156144c7576144c66137af565b5b5f82013567ffffffffffffffff8111156144e4576144e36137b3565b5b6144f084828501614449565b91505092915050565b5f815190506145078161395e565b92915050565b5f60208284031215614522576145216137af565b5b5f61452f848285016144f9565b91505092915050565b50565b5f6145465f836141f1565b915061455182614538565b5f82019050919050565b5f60a08201905061456e5f830187613c36565b61457b6020830186613c36565b6145886040830185613d08565b6145956060830184613d08565b81810360808301526145a68161453b565b905095945050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6145e3826145b1565b6145ed81856145bb565b93506145fd8185602086016145cb565b6146068161420f565b840191505092915050565b5f604083015f8301516146265f8601826138b8565b506020830151848203602086015261463e82826145d9565b9150508091505092915050565b5f6020820190508181035f8301526146638184614611565b905092915050565b5f614675826145b1565b61467f81856141f1565b935061468f8185602086016145cb565b6146988161420f565b840191505092915050565b5f6020820190508181035f8301526146bb818461466b565b905092915050565b5f815190506146d181613cb3565b92915050565b5f80604083850312156146ed576146ec6137af565b5b5f6146fa858286016144f9565b925050602061470b858286016146c3565b9150509250929050565b5f61471f82613888565b9050919050565b5f61473082614715565b9050919050565b61474081614726565b811461474a575f80fd5b50565b5f8151905061475b81614737565b92915050565b5f61477361476e846143ab565b614389565b90508281526020810184848401111561478f5761478e6143a7565b5b61479a8482856145cb565b509392505050565b5f82601f8301126147b6576147b5613dce565b5b81516147c6848260208601614761565b91505092915050565b5f606082840312156147e4576147e3614327565b5b6147ee6060614389565b90505f6147fd8482850161429c565b5f830152506020614810848285016146c3565b602083015250604082015167ffffffffffffffff811115614834576148336143a3565b5b614840848285016147a2565b60408301525092915050565b5f67ffffffffffffffff8211156148665761486561432b565b5b602082029050602081019050919050565b5f6148896148848461484c565b614389565b905080838252602082019050602084028301858111156148ac576148ab613dd6565b5b835b818110156148f357805167ffffffffffffffff8111156148d1576148d0613dce565b5b8086016148de89826147cf565b855260208501945050506020810190506148ae565b5050509392505050565b5f82601f83011261491157614910613dce565b5b8151614921848260208601614877565b91505092915050565b5f8151905061493881613c5e565b92915050565b5f610100828403121561495457614953614327565b5b61495f610100614389565b90505f61496e8482850161474d565b5f83015250602082015167ffffffffffffffff811115614991576149906143a3565b5b61499d848285016147cf565b602083015250604082015167ffffffffffffffff8111156149c1576149c06143a3565b5b6149cd848285016147cf565b604083015250606082015167ffffffffffffffff8111156149f1576149f06143a3565b5b6149fd848285016147cf565b606083015250608082015167ffffffffffffffff811115614a2157614a206143a3565b5b614a2d848285016148fd565b60808301525060a0614a418482850161492a565b60a08301525060c0614a55848285016144f9565b60c08301525060e0614a69848285016146c3565b60e08301525092915050565b5f60208284031215614a8a57614a896137af565b5b5f82015167ffffffffffffffff811115614aa757614aa66137b3565b5b614ab38482850161493e565b91505092915050565b5f614ac682613b47565b9150614ad183613b47565b9250828201905067ffffffffffffffff811115614af157614af06140f3565b5b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614b2b81614af7565b82525050565b5f602082019050614b445f830184614b22565b92915050565b5f604082019050614b5d5f830185614b22565b614b6a6020830184613c36565b9392505050565b5f608082019050614b845f830187613d08565b614b916020830186613c36565b614b9e6040830185613c36565b614bab6060830184613c36565b95945050505050565b5f819050919050565b614bce614bc9826138c7565b614bb4565b82525050565b5f614bdf8285614bbd565b602082019150614bef8284614bbd565b6020820191508190509392505050565b5f604082019050614c125f830185613c36565b614c1f6020830184613d08565b9392505050565b5f60208284031215614c3b57614c3a6137af565b5b5f82015167ffffffffffffffff811115614c5857614c576137b3565b5b614c64848285016147a2565b91505092915050565b60038110614c79575f80fd5b50565b5f81519050614c8a81614c6d565b92915050565b5f60808284031215614ca557614ca4614327565b5b614caf6080614389565b90505f614cbe84828501614c7c565b5f830152506020614cd1848285016146c3565b6020830152506040614ce5848285016146c3565b604083015250606082015167ffffffffffffffff811115614d0957614d086143a3565b5b614d15848285016147a2565b60608301525092915050565b5f60208284031215614d3657614d356137af565b5b5f82015167ffffffffffffffff811115614d5357614d526137b3565b5b614d5f84828501614c90565b91505092915050565b5f60208284031215614d7d57614d7c614327565b5b614d876020614389565b90505f614d96848285016144f9565b5f8301525092915050565b5f60208284031215614db657614db56137af565b5b5f614dc384828501614d68565b91505092915050565b602082015f820151614de05f8501826138d0565b50505050565b5f602082019050614df95f830184614dcc565b92915050565b5f608083015f830151614e145f860182613879565b506020830151614e2760208601826138b8565b506040830151614e3a60408601826138b8565b5060608301518482036060860152614e5282826145d9565b9150508091505092915050565b5f6020820190508181035f830152614e778184614dff565b905092915050565b5f60608284031215614e9457614e93614327565b5b614e9e6060614389565b90505f614ead848285016144f9565b5f830152506020614ec0848285016144f9565b602083015250604082015167ffffffffffffffff811115614ee457614ee36143a3565b5b614ef0848285016147a2565b60408301525092915050565b5f60208284031215614f1157614f106137af565b5b5f82015167ffffffffffffffff811115614f2e57614f2d6137b3565b5b614f3a84828501614e7f565b91505092915050565b5f606083015f830151614f585f8601826138d0565b506020830151614f6b60208601826138d0565b5060408301518482036040860152614f8382826145d9565b9150508091505092915050565b5f6020820190508181035f830152614fa88184614f43565b905092915050565b5f8060408385031215614fc657614fc56137af565b5b5f614fd3858286016144f9565b925050602083015167ffffffffffffffff811115614ff457614ff36137b3565b5b615000858286016147a2565b915050925092905056fea2646970667358221220aa80f38bd26585c4ae26c678513ad57bc3d32203b684fad61d32034115fe0e4264736f6c634300081a0033";
30
30
  function D(t) {
31
31
  const b = t.state.current, f = t.state.connections.get(b), e = f == null ? void 0 : f.accounts, a = e == null ? void 0 : e[0], c = t.chains.find((i) => i.id === (f == null ? void 0 : f.chainId)), d = t.state.status;
32
32
  switch (d) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boostxyz/sdk",
3
- "version": "2.0.0-alpha.27",
3
+ "version": "2.0.0-alpha.29",
4
4
  "license": "GPL-3.0-or-later",
5
5
  "type": "module",
6
6
  "files": [
@@ -38,6 +38,7 @@ import {
38
38
  transactionSenderClaimant,
39
39
  } from "./EventAction";
40
40
  import { allKnownSignatures } from "@boostxyz/test/allKnownSignatures";
41
+ import { getTransactionReceipt } from "@wagmi/core";
41
42
 
42
43
  let fixtures: Fixtures,
43
44
  erc721: MockERC721,
@@ -427,7 +428,6 @@ describe("EventAction Event Selector", () => {
427
428
  expect(
428
429
  await action.validateActionSteps({
429
430
  hash,
430
- chainId,
431
431
  knownSignatures: allKnownSignatures,
432
432
  }),
433
433
  ).toBe(true);
@@ -466,7 +466,6 @@ describe("EventAction Event Selector", () => {
466
466
  expect(
467
467
  await action.validateActionSteps({
468
468
  hash,
469
- chainId,
470
469
  logs,
471
470
  knownSignatures: allKnownSignatures,
472
471
  }),
@@ -492,7 +491,6 @@ describe("EventAction Event Selector", () => {
492
491
  await expect(() =>
493
492
  action.validateActionSteps({
494
493
  hash,
495
- chainId,
496
494
  knownSignatures: allKnownSignatures,
497
495
  }),
498
496
  ).rejects.toThrowError(/Parameter is not transparently stored onchain/);
@@ -513,7 +511,6 @@ describe("EventAction Event Selector", () => {
513
511
  expect(
514
512
  await action.validateActionSteps({
515
513
  hash,
516
- chainId,
517
514
  knownSignatures: allKnownSignatures,
518
515
  }),
519
516
  ).toBe(true);
@@ -535,7 +532,6 @@ describe("EventAction Event Selector", () => {
535
532
  expect(
536
533
  await action.validateActionSteps({
537
534
  hash,
538
- chainId,
539
535
  knownSignatures: allKnownSignatures,
540
536
  }),
541
537
  ).toBe(true);
@@ -562,7 +558,6 @@ describe("EventAction Event Selector", () => {
562
558
  await action.getActionClaimant(),
563
559
  {
564
560
  hash,
565
- chainId,
566
561
  knownSignatures: allKnownSignatures,
567
562
  },
568
563
  ))!,
@@ -585,7 +580,6 @@ describe("EventAction Event Selector", () => {
585
580
  await action.getActionClaimant(),
586
581
  {
587
582
  hash,
588
- chainId,
589
583
  knownSignatures: allKnownSignatures,
590
584
  },
591
585
  ),
@@ -604,13 +598,65 @@ describe("EventAction Event Selector", () => {
604
598
  await action.getActionClaimant(),
605
599
  {
606
600
  hash,
607
- chainId,
608
601
  knownSignatures: allKnownSignatures,
609
602
  },
610
603
  ),
611
604
  ).toBe(recipient);
612
605
  });
613
606
 
607
+ test("can derive the claimant from a function action only if tx block number is gte than `notBeforeBlockNumber`", async () => {
608
+ const action = await loadFixture(cloneFunctionAction(fixtures, erc721));
609
+ const recipient = accounts[1].account;
610
+ const { hash } = await erc721.mintRaw(recipient, {
611
+ value: parseEther(".1"),
612
+ });
613
+
614
+ const receipt = await getTransactionReceipt(defaultOptions.config, {
615
+ hash,
616
+ });
617
+
618
+ expect(
619
+ await action.deriveActionClaimantFromTransaction(
620
+ await action.getActionClaimant(),
621
+ {
622
+ hash,
623
+ knownSignatures: allKnownSignatures,
624
+ notBeforeBlockNumber: 1n,
625
+ },
626
+ ),
627
+ ).toBe(recipient);
628
+ expect(
629
+ await action.deriveActionClaimantFromTransaction(
630
+ await action.getActionClaimant(),
631
+ {
632
+ hash,
633
+ knownSignatures: allKnownSignatures,
634
+ notBeforeBlockNumber: receipt.blockNumber,
635
+ },
636
+ ),
637
+ ).toBe(recipient);
638
+ expect(
639
+ await action.deriveActionClaimantFromTransaction(
640
+ await action.getActionClaimant(),
641
+ {
642
+ hash,
643
+ knownSignatures: allKnownSignatures,
644
+ notBeforeBlockNumber: receipt.blockNumber + 1n,
645
+ },
646
+ ),
647
+ ).toBe(undefined);
648
+ expect(
649
+ await action.deriveActionClaimantFromTransaction(
650
+ await action.getActionClaimant(),
651
+ {
652
+ hash,
653
+ knownSignatures: allKnownSignatures,
654
+ notBeforeBlockNumber: BigInt(Number.MAX_SAFE_INTEGER),
655
+ },
656
+ ),
657
+ ).toBe(undefined);
658
+ });
659
+
614
660
  test("validates empty actionParameter", async () => {
615
661
  const action = await loadFixture(
616
662
  cloneEventAction(
@@ -629,7 +675,6 @@ describe("EventAction Event Selector", () => {
629
675
  expect(
630
676
  await action.validateActionSteps({
631
677
  hash,
632
- chainId,
633
678
  knownSignatures: allKnownSignatures,
634
679
  }),
635
680
  ).toBe(true);
@@ -932,12 +977,57 @@ describe("EventAction Func Selector", () => {
932
977
  expect(
933
978
  await action.isActionStepValid(actionStep, {
934
979
  hash,
935
- chainId,
936
980
  knownSignatures: allKnownSignatures,
937
981
  }),
938
982
  ).toBe(true);
939
983
  });
940
984
 
985
+ test("validates action step with `notBeforeBlockNumber` lower than tx blockNumber", async () => {
986
+ const action = await loadFixture(cloneFunctionAction(fixtures, erc721));
987
+ const actionSteps = await action.getActionSteps();
988
+ const actionStep = actionSteps[0]!;
989
+ const recipient = accounts[1].account;
990
+ const { hash } = await erc721.mintRaw(recipient, {
991
+ value: parseEther(".1"),
992
+ });
993
+
994
+ const criteriaMatch = await action.isActionStepValid(actionStep, {
995
+ notBeforeBlockNumber: BigInt(Number.MAX_SAFE_INTEGER),
996
+ hash,
997
+ knownSignatures: allKnownSignatures,
998
+ });
999
+
1000
+ expect(criteriaMatch).toBe(false);
1001
+ });
1002
+
1003
+ test("validates action step with `notBeforeBlockNumber` greater than/equal to tx blockNumber", async () => {
1004
+ const action = await loadFixture(cloneFunctionAction(fixtures, erc721));
1005
+ const actionSteps = await action.getActionSteps();
1006
+ const actionStep = actionSteps[0]!;
1007
+ const recipient = accounts[1].account;
1008
+ const { hash } = await erc721.mintRaw(recipient, {
1009
+ value: parseEther(".1"),
1010
+ });
1011
+ const receipt = await getTransactionReceipt(defaultOptions.config, {
1012
+ hash,
1013
+ });
1014
+
1015
+ const eqMatch = await action.isActionStepValid(actionStep, {
1016
+ notBeforeBlockNumber: receipt.blockNumber,
1017
+ hash,
1018
+ knownSignatures: allKnownSignatures,
1019
+ });
1020
+
1021
+ expect(eqMatch).toBe(true);
1022
+ const gtMatch = await action.isActionStepValid(actionStep, {
1023
+ notBeforeBlockNumber: receipt.blockNumber - 1n,
1024
+ hash,
1025
+ knownSignatures: allKnownSignatures,
1026
+ });
1027
+
1028
+ expect(gtMatch).toBe(true);
1029
+ });
1030
+
941
1031
  test("validates function step with EQUAL filter", async () => {
942
1032
  const action = await loadFixture(cloneFunctionAction(fixtures, erc721));
943
1033
  const actionSteps = await action.getActionSteps();
@@ -949,7 +1039,6 @@ describe("EventAction Func Selector", () => {
949
1039
 
950
1040
  const criteriaMatch = await action.isActionStepValid(actionStep, {
951
1041
  hash,
952
- chainId,
953
1042
  knownSignatures: allKnownSignatures,
954
1043
  });
955
1044
 
@@ -974,7 +1063,6 @@ describe("EventAction Func Selector", () => {
974
1063
  try {
975
1064
  await action.isActionStepValid(invalidStep, {
976
1065
  hash,
977
- chainId,
978
1066
  knownSignatures: allKnownSignatures,
979
1067
  });
980
1068
  } catch (e) {
@@ -1001,7 +1089,6 @@ describe("EventAction Func Selector", () => {
1001
1089
  expect(
1002
1090
  await action.validateActionSteps({
1003
1091
  hash,
1004
- chainId,
1005
1092
  knownSignatures: allKnownSignatures,
1006
1093
  }),
1007
1094
  ).toBe(true);
@@ -1020,7 +1107,6 @@ describe("EventAction Func Selector", () => {
1020
1107
  expect(
1021
1108
  await action.isActionStepValid(actionStep, {
1022
1109
  hash,
1023
- chainId,
1024
1110
  knownSignatures: allKnownSignatures,
1025
1111
  }),
1026
1112
  ).toBe(true);
@@ -1045,7 +1131,6 @@ describe("EventAction Func Selector", () => {
1045
1131
  expect(
1046
1132
  await action.isActionStepValid(actionStep, {
1047
1133
  hash,
1048
- chainId,
1049
1134
  knownSignatures: allKnownSignatures,
1050
1135
  }),
1051
1136
  ).toBe(true);
@@ -1069,7 +1154,6 @@ describe("EventAction Func Selector", () => {
1069
1154
  expect(
1070
1155
  await action.isActionStepValid(actionStep, {
1071
1156
  hash,
1072
- chainId,
1073
1157
  knownSignatures: allKnownSignatures,
1074
1158
  }),
1075
1159
  ).toBe(true);
@@ -1085,7 +1169,6 @@ describe("EventAction Func Selector", () => {
1085
1169
  expect(
1086
1170
  await action.validateActionSteps({
1087
1171
  hash,
1088
- chainId,
1089
1172
  knownSignatures: allKnownSignatures,
1090
1173
  }),
1091
1174
  ).toBe(true);
@@ -25,6 +25,7 @@ import {
25
25
  fromHex,
26
26
  isAddress,
27
27
  isAddressEqual,
28
+ toEventSelector,
28
29
  zeroAddress,
29
30
  zeroHash,
30
31
  } from 'viem';
@@ -227,6 +228,7 @@ export interface ActionStep {
227
228
  export type ValidateActionStepParams = {
228
229
  knownSignatures: Record<Hex, AbiEvent | AbiFunction>;
229
230
  abiItem?: AbiEvent | AbiFunction;
231
+ notBeforeBlockNumber?: bigint;
230
232
  } & ({ logs: EventLogs } | (GetTransactionParameters & { hash: Hex }));
231
233
 
232
234
  /**
@@ -526,6 +528,12 @@ export class EventAction extends DeployableTarget<
526
528
  ...params,
527
529
  chainId: claimant.chainid,
528
530
  });
531
+ if (
532
+ params.notBeforeBlockNumber &&
533
+ transaction.blockNumber < params.notBeforeBlockNumber
534
+ ) {
535
+ return undefined;
536
+ }
529
537
  return transaction.from;
530
538
  }
531
539
  if ('logs' in params) {
@@ -536,6 +544,12 @@ export class EventAction extends DeployableTarget<
536
544
  hash: log.transactionHash,
537
545
  chainId: claimant.chainid,
538
546
  });
547
+ if (
548
+ params.notBeforeBlockNumber &&
549
+ transaction.blockNumber < params.notBeforeBlockNumber
550
+ ) {
551
+ return undefined;
552
+ }
539
553
  return transaction.from;
540
554
  }
541
555
  }
@@ -572,14 +586,22 @@ export class EventAction extends DeployableTarget<
572
586
  ...params,
573
587
  chainId: claimant.chainid,
574
588
  });
575
- const decodedLogs = receipt.logs.map((log) => {
576
- const { eventName, args } = decodeEventLog({
577
- abi: [event],
578
- data: log.data,
579
- topics: log.topics,
589
+ if (
590
+ params.notBeforeBlockNumber &&
591
+ receipt.blockNumber < params.notBeforeBlockNumber
592
+ ) {
593
+ return undefined;
594
+ }
595
+ const decodedLogs = receipt.logs
596
+ .filter((log) => log.topics[0] === toEventSelector(event))
597
+ .map((log) => {
598
+ const { eventName, args } = decodeEventLog({
599
+ abi: [event],
600
+ data: log.data,
601
+ topics: log.topics,
602
+ });
603
+ return { ...log, eventName, args };
580
604
  });
581
- return { ...log, eventName, args };
582
- });
583
605
 
584
606
  for (let log of decodedLogs) {
585
607
  if (!isAddressEqual(log.address, claimant.targetContract)) continue;
@@ -593,6 +615,12 @@ export class EventAction extends DeployableTarget<
593
615
  ...params,
594
616
  chainId: claimant.chainid,
595
617
  });
618
+ if (
619
+ params.notBeforeBlockNumber &&
620
+ transaction.blockNumber < params.notBeforeBlockNumber
621
+ ) {
622
+ return undefined;
623
+ }
596
624
  if (!isAddressEqual(transaction.to!, claimant.targetContract)) return;
597
625
  let func: AbiFunction;
598
626
  if (params.abiItem) func = params.abiItem as AbiFunction;
@@ -705,15 +733,19 @@ export class EventAction extends DeployableTarget<
705
733
  ...params,
706
734
  chainId: actionStep.chainid,
707
735
  });
708
- const decodedLogs = receipt.logs.map((log) => {
709
- const { eventName, args } = decodeEventLog({
710
- abi: [event],
711
- data: log.data,
712
- topics: log.topics,
713
- });
736
+ if (params.notBeforeBlockNumber)
737
+ return receipt.blockNumber >= params.notBeforeBlockNumber;
738
+ const decodedLogs = receipt.logs
739
+ .filter((log) => log.topics[0] === toEventSelector(event))
740
+ .map((log) => {
741
+ const { eventName, args } = decodeEventLog({
742
+ abi: [event],
743
+ data: log.data,
744
+ topics: log.topics,
745
+ });
714
746
 
715
- return { ...log, eventName, args };
716
- });
747
+ return { ...log, eventName, args };
748
+ });
717
749
 
718
750
  return this.isActionEventValid(actionStep, decodedLogs);
719
751
  }
@@ -723,6 +755,8 @@ export class EventAction extends DeployableTarget<
723
755
  ...params,
724
756
  chainId: actionStep.chainid,
725
757
  });
758
+ if (params.notBeforeBlockNumber)
759
+ return transaction.blockNumber >= params.notBeforeBlockNumber;
726
760
  return this.isActionFunctionValid(actionStep, transaction, params);
727
761
  }
728
762
  }