diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a826ba6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +node_modules/ +**/node_modules/ + +# Logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Environment Variables +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Build artifacts +dist/ +build/ +out/ +artifacts/ +cache/ + +# Editor & OS specific files +.DS_Store +Thumbs.db +.idea/ +.vscode/ +*.swp diff --git a/artifacts/build-info/417d3dbc8db15915c9bd7194504cd3bf.json b/artifacts/build-info/417d3dbc8db15915c9bd7194504cd3bf.json new file mode 100644 index 0000000..fd5fad6 --- /dev/null +++ b/artifacts/build-info/417d3dbc8db15915c9bd7194504cd3bf.json @@ -0,0 +1 @@ +{"id":"417d3dbc8db15915c9bd7194504cd3bf","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"contracts/Lock.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.28;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\ncontract Lock {\n uint public unlockTime;\n address payable public owner;\n\n event Withdrawal(uint amount, uint when);\n\n constructor(uint _unlockTime) payable {\n require(\n block.timestamp < _unlockTime,\n \"Unlock time should be in the future\"\n );\n\n unlockTime = _unlockTime;\n owner = payable(msg.sender);\n }\n\n function withdraw() public {\n // Uncomment this line, and the import of \"hardhat/console.sol\", to print a log in your terminal\n // console.log(\"Unlock time is %o and block timestamp is %o\", unlockTime, block.timestamp);\n\n require(block.timestamp >= unlockTime, \"You can't withdraw yet\");\n require(msg.sender == owner, \"You aren't the owner\");\n\n emit Withdrawal(address(this).balance, block.timestamp);\n\n owner.transfer(address(this).balance);\n }\n}\n"},"contracts/testament.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity ^0.8.20;\r\n\r\ncontract Testament {\r\n struct Heir {\r\n address heirAddress;\r\n uint256 percentage;\r\n string documentHash; // Hash JSON fajla sa testamentom\r\n }\r\n\r\n struct TestamentData {\r\n address owner;\r\n address lawyer;\r\n bool isActive;\r\n Heir[] heirs;\r\n }\r\n\r\n mapping(uint256 => TestamentData) public testaments;\r\n uint256 public testamentCount;\r\n\r\n event TestamentCreated(uint256 indexed testamentId, address owner, address lawyer);\r\n event TestamentActivated(uint256 indexed testamentId);\r\n event InheritanceClaimed(uint256 indexed testamentId, address heir);\r\n\r\n constructor() {}\r\n\r\n function createTestament(address _lawyer) external returns (uint256) {\r\n testamentCount++;\r\n TestamentData storage newTestament = testaments[testamentCount];\r\n newTestament.owner = msg.sender;\r\n newTestament.lawyer = _lawyer;\r\n newTestament.isActive = false;\r\n\r\n emit TestamentCreated(testamentCount, msg.sender, _lawyer);\r\n return testamentCount;\r\n }\r\n\r\n function addHeir(uint256 _testamentId, address _heir, uint256 _percentage, string memory _documentHash) external {\r\n require(msg.sender == testaments[_testamentId].owner, \"Only owner can add heirs\");\r\n testaments[_testamentId].heirs.push(Heir(_heir, _percentage, _documentHash));\r\n }\r\n\r\n function activateTestament(uint256 _testamentId) external {\r\n require(msg.sender == testaments[_testamentId].lawyer, \"Only assigned lawyer can activate the testament\");\r\n testaments[_testamentId].isActive = true;\r\n emit TestamentActivated(_testamentId);\r\n }\r\n\r\n function claimInheritance(uint256 _testamentId, bytes calldata proof) external returns (uint256, string memory) {\r\n require(testaments[_testamentId].isActive, \"Testament is not active\");\r\n\r\n for (uint i = 0; i < testaments[_testamentId].heirs.length; i++) {\r\n if (testaments[_testamentId].heirs[i].heirAddress == msg.sender) {\r\n // TODO: Verifikacija zkProof-a ovde\r\n emit InheritanceClaimed(_testamentId, msg.sender);\r\n return (testaments[_testamentId].heirs[i].percentage, testaments[_testamentId].heirs[i].documentHash);\r\n }\r\n }\r\n revert(\"You are not listed as an heir\");\r\n }\r\n}\r\n"}},"settings":{"evmVersion":"paris","optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n --> contracts/testament.sol:49:53:\n |\n49 | function claimInheritance(uint256 _testamentId, bytes calldata proof) external returns (uint256, string memory) {\n | ^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":1792,"file":"contracts/testament.sol","start":1772},"type":"Warning"}],"sources":{"contracts/Lock.sol":{"ast":{"absolutePath":"contracts/Lock.sol","exportedSymbols":{"Lock":[78]},"id":79,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".28"],"nodeType":"PragmaDirective","src":"39:24:0"},{"abstract":false,"baseContracts":[],"canonicalName":"Lock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":78,"linearizedBaseContracts":[78],"name":"Lock","nameLocation":"150:4:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"251c1aa3","id":3,"mutability":"mutable","name":"unlockTime","nameLocation":"173:10:0","nodeType":"VariableDeclaration","scope":78,"src":"161:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2,"name":"uint","nodeType":"ElementaryTypeName","src":"161:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"8da5cb5b","id":5,"mutability":"mutable","name":"owner","nameLocation":"212:5:0","nodeType":"VariableDeclaration","scope":78,"src":"189:28:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"189:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"public"},{"anonymous":false,"eventSelector":"bf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b93","id":11,"name":"Withdrawal","nameLocation":"230:10:0","nodeType":"EventDefinition","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"246:6:0","nodeType":"VariableDeclaration","scope":11,"src":"241:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint","nodeType":"ElementaryTypeName","src":"241:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"indexed":false,"mutability":"mutable","name":"when","nameLocation":"259:4:0","nodeType":"VariableDeclaration","scope":11,"src":"254:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint","nodeType":"ElementaryTypeName","src":"254:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"240:24:0"},"src":"224:41:0"},{"body":{"id":36,"nodeType":"Block","src":"309:200:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"340:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":18,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"346:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"340:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":19,"name":"_unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"358:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"340:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e6c6f636b2074696d652073686f756c6420626520696e2074686520667574757265","id":21,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"383:37:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","typeString":"literal_string \"Unlock time should be in the future\""},"value":"Unlock time should be in the future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","typeString":"literal_string \"Unlock time should be in the future\""}],"id":16,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"319:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":22,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"319:111:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23,"nodeType":"ExpressionStatement","src":"319:111:0"},{"expression":{"id":26,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24,"name":"unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3,"src":"441:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":25,"name":"_unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"454:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"441:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27,"nodeType":"ExpressionStatement","src":"441:24:0"},{"expression":{"id":34,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":28,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5,"src":"475:5:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":31,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"491:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":32,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"495:6:0","memberName":"sender","nodeType":"MemberAccess","src":"491:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":30,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"483:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":29,"name":"address","nodeType":"ElementaryTypeName","src":"483:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":33,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"483:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"475:27:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":35,"nodeType":"ExpressionStatement","src":"475:27:0"}]},"id":37,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13,"mutability":"mutable","name":"_unlockTime","nameLocation":"288:11:0","nodeType":"VariableDeclaration","scope":37,"src":"283:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12,"name":"uint","nodeType":"ElementaryTypeName","src":"283:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"282:18:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"309:0:0"},"scope":78,"src":"271:238:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":76,"nodeType":"Block","src":"542:463:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":41,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"766:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":42,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"772:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"766:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":43,"name":"unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3,"src":"785:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"766:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"596f752063616e277420776974686472617720796574","id":45,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"797:24:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","typeString":"literal_string \"You can't withdraw yet\""},"value":"You can't withdraw yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","typeString":"literal_string \"You can't withdraw yet\""}],"id":40,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"758:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"758:64:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47,"nodeType":"ExpressionStatement","src":"758:64:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":49,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"840:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":50,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"844:6:0","memberName":"sender","nodeType":"MemberAccess","src":"840:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":51,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5,"src":"854:5:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"840:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"596f75206172656e277420746865206f776e6572","id":53,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"861:22:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","typeString":"literal_string \"You aren't the owner\""},"value":"You aren't the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","typeString":"literal_string \"You aren't the owner\""}],"id":48,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"832:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"832:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55,"nodeType":"ExpressionStatement","src":"832:52:0"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":59,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"919:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_Lock_$78","typeString":"contract Lock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lock_$78","typeString":"contract Lock"}],"id":58,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"911:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:0","typeDescriptions":{}}},"id":60,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"911:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":61,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:7:0","memberName":"balance","nodeType":"MemberAccess","src":"911:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":62,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"934:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":63,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"940:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"934:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56,"name":"Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"900:10:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":64,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"900:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":65,"nodeType":"EmitStatement","src":"895:55:0"},{"expression":{"arguments":[{"expression":{"arguments":[{"id":71,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"984:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_Lock_$78","typeString":"contract Lock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lock_$78","typeString":"contract Lock"}],"id":70,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"976:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"976:7:0","typeDescriptions":{}}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"976:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"990:7:0","memberName":"balance","nodeType":"MemberAccess","src":"976:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":66,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5,"src":"961:5:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":68,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"967:8:0","memberName":"transfer","nodeType":"MemberAccess","src":"961:14:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"961:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75,"nodeType":"ExpressionStatement","src":"961:37:0"}]},"functionSelector":"3ccfd60b","id":77,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"524:8:0","nodeType":"FunctionDefinition","parameters":{"id":38,"nodeType":"ParameterList","parameters":[],"src":"532:2:0"},"returnParameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"542:0:0"},"scope":78,"src":"515:490:0","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":79,"src":"141:866:0","usedErrors":[],"usedEvents":[11]}],"src":"39:969:0"},"id":0},"contracts/testament.sol":{"ast":{"absolutePath":"contracts/testament.sol","exportedSymbols":{"Testament":[311]},"id":312,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":80,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:1"},{"abstract":false,"baseContracts":[],"canonicalName":"Testament","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":311,"linearizedBaseContracts":[311],"name":"Testament","nameLocation":"70:9:1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Testament.Heir","id":87,"members":[{"constant":false,"id":82,"mutability":"mutable","name":"heirAddress","nameLocation":"118:11:1","nodeType":"VariableDeclaration","scope":87,"src":"110:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81,"name":"address","nodeType":"ElementaryTypeName","src":"110:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":84,"mutability":"mutable","name":"percentage","nameLocation":"148:10:1","nodeType":"VariableDeclaration","scope":87,"src":"140:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83,"name":"uint256","nodeType":"ElementaryTypeName","src":"140:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":86,"mutability":"mutable","name":"documentHash","nameLocation":"176:12:1","nodeType":"VariableDeclaration","scope":87,"src":"169:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":85,"name":"string","nodeType":"ElementaryTypeName","src":"169:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"Heir","nameLocation":"94:4:1","nodeType":"StructDefinition","scope":311,"src":"87:143:1","visibility":"public"},{"canonicalName":"Testament.TestamentData","id":98,"members":[{"constant":false,"id":89,"mutability":"mutable","name":"owner","nameLocation":"278:5:1","nodeType":"VariableDeclaration","scope":98,"src":"270:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":88,"name":"address","nodeType":"ElementaryTypeName","src":"270:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91,"mutability":"mutable","name":"lawyer","nameLocation":"302:6:1","nodeType":"VariableDeclaration","scope":98,"src":"294:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90,"name":"address","nodeType":"ElementaryTypeName","src":"294:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":93,"mutability":"mutable","name":"isActive","nameLocation":"324:8:1","nodeType":"VariableDeclaration","scope":98,"src":"319:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":92,"name":"bool","nodeType":"ElementaryTypeName","src":"319:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"heirs","nameLocation":"350:5:1","nodeType":"VariableDeclaration","scope":98,"src":"343:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Heir_$87_storage_$dyn_storage_ptr","typeString":"struct Testament.Heir[]"},"typeName":{"baseType":{"id":95,"nodeType":"UserDefinedTypeName","pathNode":{"id":94,"name":"Heir","nameLocations":["343:4:1"],"nodeType":"IdentifierPath","referencedDeclaration":87,"src":"343:4:1"},"referencedDeclaration":87,"src":"343:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Heir_$87_storage_ptr","typeString":"struct Testament.Heir"}},"id":96,"nodeType":"ArrayTypeName","src":"343:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Heir_$87_storage_$dyn_storage_ptr","typeString":"struct Testament.Heir[]"}},"visibility":"internal"}],"name":"TestamentData","nameLocation":"245:13:1","nodeType":"StructDefinition","scope":311,"src":"238:125:1","visibility":"public"},{"constant":false,"functionSelector":"d5df76a3","id":103,"mutability":"mutable","name":"testaments","nameLocation":"412:10:1","nodeType":"VariableDeclaration","scope":311,"src":"371:51:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData)"},"typeName":{"id":102,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":99,"name":"uint256","nodeType":"ElementaryTypeName","src":"379:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"371:33:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":101,"nodeType":"UserDefinedTypeName","pathNode":{"id":100,"name":"TestamentData","nameLocations":["390:13:1"],"nodeType":"IdentifierPath","referencedDeclaration":98,"src":"390:13:1"},"referencedDeclaration":98,"src":"390:13:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage_ptr","typeString":"struct Testament.TestamentData"}}},"visibility":"public"},{"constant":false,"functionSelector":"d1d3a04c","id":105,"mutability":"mutable","name":"testamentCount","nameLocation":"444:14:1","nodeType":"VariableDeclaration","scope":311,"src":"429:29:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":104,"name":"uint256","nodeType":"ElementaryTypeName","src":"429:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"anonymous":false,"eventSelector":"9c6a0135230f01de660fe231c80c4d2e0d8d9ee407b4d0d628823617469b5583","id":113,"name":"TestamentCreated","nameLocation":"473:16:1","nodeType":"EventDefinition","parameters":{"id":112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":107,"indexed":true,"mutability":"mutable","name":"testamentId","nameLocation":"506:11:1","nodeType":"VariableDeclaration","scope":113,"src":"490:27:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":106,"name":"uint256","nodeType":"ElementaryTypeName","src":"490:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":109,"indexed":false,"mutability":"mutable","name":"owner","nameLocation":"527:5:1","nodeType":"VariableDeclaration","scope":113,"src":"519:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"519:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":111,"indexed":false,"mutability":"mutable","name":"lawyer","nameLocation":"542:6:1","nodeType":"VariableDeclaration","scope":113,"src":"534:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":110,"name":"address","nodeType":"ElementaryTypeName","src":"534:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"489:60:1"},"src":"467:83:1"},{"anonymous":false,"eventSelector":"738789d97160bfe471f3c5d5da0280bb24b2ee025a7b5d68d05831f758c46020","id":117,"name":"TestamentActivated","nameLocation":"562:18:1","nodeType":"EventDefinition","parameters":{"id":116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":115,"indexed":true,"mutability":"mutable","name":"testamentId","nameLocation":"597:11:1","nodeType":"VariableDeclaration","scope":117,"src":"581:27:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":114,"name":"uint256","nodeType":"ElementaryTypeName","src":"581:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"580:29:1"},"src":"556:54:1"},{"anonymous":false,"eventSelector":"2edeba758f9de0f2e37457a533bc3cea5345b89fe919eb96dce18ba028b7d63e","id":123,"name":"InheritanceClaimed","nameLocation":"622:18:1","nodeType":"EventDefinition","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119,"indexed":true,"mutability":"mutable","name":"testamentId","nameLocation":"657:11:1","nodeType":"VariableDeclaration","scope":123,"src":"641:27:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":118,"name":"uint256","nodeType":"ElementaryTypeName","src":"641:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121,"indexed":false,"mutability":"mutable","name":"heir","nameLocation":"678:4:1","nodeType":"VariableDeclaration","scope":123,"src":"670:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"670:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"640:43:1"},"src":"616:68:1"},{"body":{"id":126,"nodeType":"Block","src":"706:2:1","statements":[]},"id":127,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":124,"nodeType":"ParameterList","parameters":[],"src":"703:2:1"},"returnParameters":{"id":125,"nodeType":"ParameterList","parameters":[],"src":"706:0:1"},"scope":311,"src":"692:16:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":172,"nodeType":"Block","src":"785:334:1","statements":[{"expression":{"id":135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"796:16:1","subExpression":{"id":134,"name":"testamentCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":105,"src":"796:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":136,"nodeType":"ExpressionStatement","src":"796:16:1"},{"assignments":[139],"declarations":[{"constant":false,"id":139,"mutability":"mutable","name":"newTestament","nameLocation":"845:12:1","nodeType":"VariableDeclaration","scope":172,"src":"823:34:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage_ptr","typeString":"struct Testament.TestamentData"},"typeName":{"id":138,"nodeType":"UserDefinedTypeName","pathNode":{"id":137,"name":"TestamentData","nameLocations":["823:13:1"],"nodeType":"IdentifierPath","referencedDeclaration":98,"src":"823:13:1"},"referencedDeclaration":98,"src":"823:13:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage_ptr","typeString":"struct Testament.TestamentData"}},"visibility":"internal"}],"id":143,"initialValue":{"baseExpression":{"id":140,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"860:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":142,"indexExpression":{"id":141,"name":"testamentCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":105,"src":"871:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"860:26:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"nodeType":"VariableDeclarationStatement","src":"823:63:1"},{"expression":{"id":149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":144,"name":"newTestament","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":139,"src":"897:12:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage_ptr","typeString":"struct Testament.TestamentData storage pointer"}},"id":146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"910:5:1","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":89,"src":"897:18:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":147,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"918:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"922:6:1","memberName":"sender","nodeType":"MemberAccess","src":"918:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"897:31:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":150,"nodeType":"ExpressionStatement","src":"897:31:1"},{"expression":{"id":155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":151,"name":"newTestament","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":139,"src":"939:12:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage_ptr","typeString":"struct Testament.TestamentData storage pointer"}},"id":153,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"952:6:1","memberName":"lawyer","nodeType":"MemberAccess","referencedDeclaration":91,"src":"939:19:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":154,"name":"_lawyer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"961:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"939:29:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":156,"nodeType":"ExpressionStatement","src":"939:29:1"},{"expression":{"id":161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":157,"name":"newTestament","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":139,"src":"979:12:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage_ptr","typeString":"struct Testament.TestamentData storage pointer"}},"id":159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"992:8:1","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":93,"src":"979:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1003:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"979:29:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":162,"nodeType":"ExpressionStatement","src":"979:29:1"},{"eventCall":{"arguments":[{"id":164,"name":"testamentCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":105,"src":"1043:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":165,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1059:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1063:6:1","memberName":"sender","nodeType":"MemberAccess","src":"1059:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":167,"name":"_lawyer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"1071:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":163,"name":"TestamentCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113,"src":"1026:16:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (uint256,address,address)"}},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1026:53:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":169,"nodeType":"EmitStatement","src":"1021:58:1"},{"expression":{"id":170,"name":"testamentCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":105,"src":"1097:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":133,"id":171,"nodeType":"Return","src":"1090:21:1"}]},"functionSelector":"8508e152","id":173,"implemented":true,"kind":"function","modifiers":[],"name":"createTestament","nameLocation":"725:15:1","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":129,"mutability":"mutable","name":"_lawyer","nameLocation":"749:7:1","nodeType":"VariableDeclaration","scope":173,"src":"741:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"741:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"740:17:1"},"returnParameters":{"id":133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":173,"src":"776:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":131,"name":"uint256","nodeType":"ElementaryTypeName","src":"776:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"775:9:1"},"scope":311,"src":"716:403:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":207,"nodeType":"Block","src":"1240:187:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":185,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1259:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1263:6:1","memberName":"sender","nodeType":"MemberAccess","src":"1259:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"baseExpression":{"id":187,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"1273:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":189,"indexExpression":{"id":188,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"1284:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1273:24:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"id":190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1298:5:1","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":89,"src":"1273:30:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1259:44:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c79206f776e65722063616e20616464206865697273","id":192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1305:26:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c","typeString":"literal_string \"Only owner can add heirs\""},"value":"Only owner can add heirs"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c","typeString":"literal_string \"Only owner can add heirs\""}],"id":184,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1251:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1251:81:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":194,"nodeType":"ExpressionStatement","src":"1251:81:1"},{"expression":{"arguments":[{"arguments":[{"id":201,"name":"_heir","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"1384:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":202,"name":"_percentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"1391:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":203,"name":"_documentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"1404:13:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":200,"name":"Heir","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87,"src":"1379:4:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Heir_$87_storage_ptr_$","typeString":"type(struct Testament.Heir storage pointer)"}},"id":204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1379:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Heir_$87_memory_ptr","typeString":"struct Testament.Heir memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Heir_$87_memory_ptr","typeString":"struct Testament.Heir memory"}],"expression":{"expression":{"baseExpression":{"id":195,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"1343:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":197,"indexExpression":{"id":196,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"1354:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1343:24:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"id":198,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1368:5:1","memberName":"heirs","nodeType":"MemberAccess","referencedDeclaration":97,"src":"1343:30:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Heir_$87_storage_$dyn_storage","typeString":"struct Testament.Heir storage ref[] storage ref"}},"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1374:4:1","memberName":"push","nodeType":"MemberAccess","src":"1343:35:1","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Heir_$87_storage_$dyn_storage_ptr_$_t_struct$_Heir_$87_storage_$returns$__$attached_to$_t_array$_t_struct$_Heir_$87_storage_$dyn_storage_ptr_$","typeString":"function (struct Testament.Heir storage ref[] storage pointer,struct Testament.Heir storage ref)"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1343:76:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":206,"nodeType":"ExpressionStatement","src":"1343:76:1"}]},"functionSelector":"9ccef960","id":208,"implemented":true,"kind":"function","modifiers":[],"name":"addHeir","nameLocation":"1136:7:1","nodeType":"FunctionDefinition","parameters":{"id":182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":175,"mutability":"mutable","name":"_testamentId","nameLocation":"1152:12:1","nodeType":"VariableDeclaration","scope":208,"src":"1144:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":174,"name":"uint256","nodeType":"ElementaryTypeName","src":"1144:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":177,"mutability":"mutable","name":"_heir","nameLocation":"1174:5:1","nodeType":"VariableDeclaration","scope":208,"src":"1166:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"1166:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"_percentage","nameLocation":"1189:11:1","nodeType":"VariableDeclaration","scope":208,"src":"1181:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":181,"mutability":"mutable","name":"_documentHash","nameLocation":"1216:13:1","nodeType":"VariableDeclaration","scope":208,"src":"1202:27:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":180,"name":"string","nodeType":"ElementaryTypeName","src":"1202:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1143:87:1"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[],"src":"1240:0:1"},"scope":311,"src":"1127:300:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":235,"nodeType":"Block","src":"1493:223:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":214,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1512:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1516:6:1","memberName":"sender","nodeType":"MemberAccess","src":"1512:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"baseExpression":{"id":216,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"1526:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":218,"indexExpression":{"id":217,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"1537:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1526:24:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"id":219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1551:6:1","memberName":"lawyer","nodeType":"MemberAccess","referencedDeclaration":91,"src":"1526:31:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1512:45:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c792061737369676e6564206c61777965722063616e206163746976617465207468652074657374616d656e74","id":221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1559:49:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8","typeString":"literal_string \"Only assigned lawyer can activate the testament\""},"value":"Only assigned lawyer can activate the testament"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8","typeString":"literal_string \"Only assigned lawyer can activate the testament\""}],"id":213,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1504:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1504:105:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":223,"nodeType":"ExpressionStatement","src":"1504:105:1"},{"expression":{"id":229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":224,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"1620:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":226,"indexExpression":{"id":225,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"1631:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1620:24:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"id":227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1645:8:1","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":93,"src":"1620:33:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1656:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1620:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":230,"nodeType":"ExpressionStatement","src":"1620:40:1"},{"eventCall":{"arguments":[{"id":232,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"1695:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":231,"name":"TestamentActivated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"1676:18:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":234,"nodeType":"EmitStatement","src":"1671:37:1"}]},"functionSelector":"9b6fc2e2","id":236,"implemented":true,"kind":"function","modifiers":[],"name":"activateTestament","nameLocation":"1444:17:1","nodeType":"FunctionDefinition","parameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":210,"mutability":"mutable","name":"_testamentId","nameLocation":"1470:12:1","nodeType":"VariableDeclaration","scope":236,"src":"1462:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":209,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1461:22:1"},"returnParameters":{"id":212,"nodeType":"ParameterList","parameters":[],"src":"1493:0:1"},"scope":311,"src":"1435:281:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":309,"nodeType":"Block","src":"1836:564:1","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":248,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"1855:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":250,"indexExpression":{"id":249,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"1866:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1855:24:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"id":251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1880:8:1","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":93,"src":"1855:33:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"54657374616d656e74206973206e6f7420616374697665","id":252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1890:25:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5","typeString":"literal_string \"Testament is not active\""},"value":"Testament is not active"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5","typeString":"literal_string \"Testament is not active\""}],"id":247,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1847:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1847:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":254,"nodeType":"ExpressionStatement","src":"1847:69:1"},{"body":{"id":303,"nodeType":"Block","src":"1994:349:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":269,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2013:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":271,"indexExpression":{"id":270,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"2024:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2013:24:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"id":272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2038:5:1","memberName":"heirs","nodeType":"MemberAccess","referencedDeclaration":97,"src":"2013:30:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Heir_$87_storage_$dyn_storage","typeString":"struct Testament.Heir storage ref[] storage ref"}},"id":274,"indexExpression":{"id":273,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"2044:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2013:33:1","typeDescriptions":{"typeIdentifier":"t_struct$_Heir_$87_storage","typeString":"struct Testament.Heir storage ref"}},"id":275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2047:11:1","memberName":"heirAddress","nodeType":"MemberAccess","referencedDeclaration":82,"src":"2013:45:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":276,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2062:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2066:6:1","memberName":"sender","nodeType":"MemberAccess","src":"2062:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2013:59:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":302,"nodeType":"IfStatement","src":"2009:323:1","trueBody":{"id":301,"nodeType":"Block","src":"2074:258:1","statements":[{"eventCall":{"arguments":[{"id":280,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"2171:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":281,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2185:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2189:6:1","memberName":"sender","nodeType":"MemberAccess","src":"2185:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":279,"name":"InheritanceClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":123,"src":"2152:18:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2152:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":284,"nodeType":"EmitStatement","src":"2147:49:1"},{"expression":{"components":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":285,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2223:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":287,"indexExpression":{"id":286,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"2234:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2223:24:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"id":288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2248:5:1","memberName":"heirs","nodeType":"MemberAccess","referencedDeclaration":97,"src":"2223:30:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Heir_$87_storage_$dyn_storage","typeString":"struct Testament.Heir storage ref[] storage ref"}},"id":290,"indexExpression":{"id":289,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"2254:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2223:33:1","typeDescriptions":{"typeIdentifier":"t_struct$_Heir_$87_storage","typeString":"struct Testament.Heir storage ref"}},"id":291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2257:10:1","memberName":"percentage","nodeType":"MemberAccess","referencedDeclaration":84,"src":"2223:44:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":292,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2269:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":294,"indexExpression":{"id":293,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"2280:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2269:24:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"id":295,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2294:5:1","memberName":"heirs","nodeType":"MemberAccess","referencedDeclaration":97,"src":"2269:30:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Heir_$87_storage_$dyn_storage","typeString":"struct Testament.Heir storage ref[] storage ref"}},"id":297,"indexExpression":{"id":296,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"2300:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2269:33:1","typeDescriptions":{"typeIdentifier":"t_struct$_Heir_$87_storage","typeString":"struct Testament.Heir storage ref"}},"id":298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2303:12:1","memberName":"documentHash","nodeType":"MemberAccess","referencedDeclaration":86,"src":"2269:46:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2222:94:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_string_storage_$","typeString":"tuple(uint256,string storage ref)"}},"functionReturnParameters":246,"id":300,"nodeType":"Return","src":"2215:101:1"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":259,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"1946:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"baseExpression":{"id":260,"name":"testaments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"1950:10:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TestamentData_$98_storage_$","typeString":"mapping(uint256 => struct Testament.TestamentData storage ref)"}},"id":262,"indexExpression":{"id":261,"name":"_testamentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"1961:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1950:24:1","typeDescriptions":{"typeIdentifier":"t_struct$_TestamentData_$98_storage","typeString":"struct Testament.TestamentData storage ref"}},"id":263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1975:5:1","memberName":"heirs","nodeType":"MemberAccess","referencedDeclaration":97,"src":"1950:30:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Heir_$87_storage_$dyn_storage","typeString":"struct Testament.Heir storage ref[] storage ref"}},"id":264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1981:6:1","memberName":"length","nodeType":"MemberAccess","src":"1950:37:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1946:41:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":304,"initializationExpression":{"assignments":[256],"declarations":[{"constant":false,"id":256,"mutability":"mutable","name":"i","nameLocation":"1939:1:1","nodeType":"VariableDeclaration","scope":304,"src":"1934:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":255,"name":"uint","nodeType":"ElementaryTypeName","src":"1934:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":258,"initialValue":{"hexValue":"30","id":257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1943:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1934:10:1"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1989:3:1","subExpression":{"id":266,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"1989:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":268,"nodeType":"ExpressionStatement","src":"1989:3:1"},"nodeType":"ForStatement","src":"1929:414:1"},{"expression":{"arguments":[{"hexValue":"596f7520617265206e6f74206c697374656420617320616e2068656972","id":306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2360:31:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625","typeString":"literal_string \"You are not listed as an heir\""},"value":"You are not listed as an heir"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625","typeString":"literal_string \"You are not listed as an heir\""}],"id":305,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2353:6:1","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2353:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":308,"nodeType":"ExpressionStatement","src":"2353:39:1"}]},"functionSelector":"af21e42a","id":310,"implemented":true,"kind":"function","modifiers":[],"name":"claimInheritance","nameLocation":"1733:16:1","nodeType":"FunctionDefinition","parameters":{"id":241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":238,"mutability":"mutable","name":"_testamentId","nameLocation":"1758:12:1","nodeType":"VariableDeclaration","scope":310,"src":"1750:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":237,"name":"uint256","nodeType":"ElementaryTypeName","src":"1750:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":240,"mutability":"mutable","name":"proof","nameLocation":"1787:5:1","nodeType":"VariableDeclaration","scope":310,"src":"1772:20:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":239,"name":"bytes","nodeType":"ElementaryTypeName","src":"1772:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1749:44:1"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"1812:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":242,"name":"uint256","nodeType":"ElementaryTypeName","src":"1812:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"1821:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":244,"name":"string","nodeType":"ElementaryTypeName","src":"1821:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1811:24:1"},"scope":311,"src":"1724:676:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":312,"src":"61:2342:1","usedErrors":[],"usedEvents":[113,117,123]}],"src":"33:2372:1"},"id":1}},"contracts":{"contracts/Lock.sol":{"Lock":{"abi":[{"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"when","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_37":{"entryPoint":null,"id":37,"parameterSlots":1,"returnSlots":0},"abi_decode_t_uint256_fromMemory":{"entryPoint":219,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":240,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack":{"entryPoint":381,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":416,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":285,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":186,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":181,"id":null,"parameterSlots":0,"returnSlots":0},"store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413":{"entryPoint":302,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":196,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:2248:2","nodeType":"YulBlock","src":"0:2248:2","statements":[{"body":{"nativeSrc":"47:35:2","nodeType":"YulBlock","src":"47:35:2","statements":[{"nativeSrc":"57:19:2","nodeType":"YulAssignment","src":"57:19:2","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:2","nodeType":"YulLiteral","src":"73:2:2","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:2","nodeType":"YulIdentifier","src":"67:5:2"},"nativeSrc":"67:9:2","nodeType":"YulFunctionCall","src":"67:9:2"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:2","nodeType":"YulIdentifier","src":"57:6:2"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:2","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:2","nodeType":"YulTypedName","src":"40:6:2","type":""}],"src":"7:75:2"},{"body":{"nativeSrc":"177:28:2","nodeType":"YulBlock","src":"177:28:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:2","nodeType":"YulLiteral","src":"194:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:2","nodeType":"YulLiteral","src":"197:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:2","nodeType":"YulIdentifier","src":"187:6:2"},"nativeSrc":"187:12:2","nodeType":"YulFunctionCall","src":"187:12:2"},"nativeSrc":"187:12:2","nodeType":"YulExpressionStatement","src":"187:12:2"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:2","nodeType":"YulFunctionDefinition","src":"88:117:2"},{"body":{"nativeSrc":"300:28:2","nodeType":"YulBlock","src":"300:28:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:2","nodeType":"YulLiteral","src":"317:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:2","nodeType":"YulLiteral","src":"320:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:2","nodeType":"YulIdentifier","src":"310:6:2"},"nativeSrc":"310:12:2","nodeType":"YulFunctionCall","src":"310:12:2"},"nativeSrc":"310:12:2","nodeType":"YulExpressionStatement","src":"310:12:2"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:2","nodeType":"YulFunctionDefinition","src":"211:117:2"},{"body":{"nativeSrc":"379:32:2","nodeType":"YulBlock","src":"379:32:2","statements":[{"nativeSrc":"389:16:2","nodeType":"YulAssignment","src":"389:16:2","value":{"name":"value","nativeSrc":"400:5:2","nodeType":"YulIdentifier","src":"400:5:2"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:2","nodeType":"YulIdentifier","src":"389:7:2"}]}]},"name":"cleanup_t_uint256","nativeSrc":"334:77:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:2","nodeType":"YulTypedName","src":"361:5:2","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:2","nodeType":"YulTypedName","src":"371:7:2","type":""}],"src":"334:77:2"},{"body":{"nativeSrc":"460:79:2","nodeType":"YulBlock","src":"460:79:2","statements":[{"body":{"nativeSrc":"517:16:2","nodeType":"YulBlock","src":"517:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"526:1:2","nodeType":"YulLiteral","src":"526:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"529:1:2","nodeType":"YulLiteral","src":"529:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"519:6:2","nodeType":"YulIdentifier","src":"519:6:2"},"nativeSrc":"519:12:2","nodeType":"YulFunctionCall","src":"519:12:2"},"nativeSrc":"519:12:2","nodeType":"YulExpressionStatement","src":"519:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"483:5:2","nodeType":"YulIdentifier","src":"483:5:2"},{"arguments":[{"name":"value","nativeSrc":"508:5:2","nodeType":"YulIdentifier","src":"508:5:2"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"490:17:2","nodeType":"YulIdentifier","src":"490:17:2"},"nativeSrc":"490:24:2","nodeType":"YulFunctionCall","src":"490:24:2"}],"functionName":{"name":"eq","nativeSrc":"480:2:2","nodeType":"YulIdentifier","src":"480:2:2"},"nativeSrc":"480:35:2","nodeType":"YulFunctionCall","src":"480:35:2"}],"functionName":{"name":"iszero","nativeSrc":"473:6:2","nodeType":"YulIdentifier","src":"473:6:2"},"nativeSrc":"473:43:2","nodeType":"YulFunctionCall","src":"473:43:2"},"nativeSrc":"470:63:2","nodeType":"YulIf","src":"470:63:2"}]},"name":"validator_revert_t_uint256","nativeSrc":"417:122:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"453:5:2","nodeType":"YulTypedName","src":"453:5:2","type":""}],"src":"417:122:2"},{"body":{"nativeSrc":"608:80:2","nodeType":"YulBlock","src":"608:80:2","statements":[{"nativeSrc":"618:22:2","nodeType":"YulAssignment","src":"618:22:2","value":{"arguments":[{"name":"offset","nativeSrc":"633:6:2","nodeType":"YulIdentifier","src":"633:6:2"}],"functionName":{"name":"mload","nativeSrc":"627:5:2","nodeType":"YulIdentifier","src":"627:5:2"},"nativeSrc":"627:13:2","nodeType":"YulFunctionCall","src":"627:13:2"},"variableNames":[{"name":"value","nativeSrc":"618:5:2","nodeType":"YulIdentifier","src":"618:5:2"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"676:5:2","nodeType":"YulIdentifier","src":"676:5:2"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"649:26:2","nodeType":"YulIdentifier","src":"649:26:2"},"nativeSrc":"649:33:2","nodeType":"YulFunctionCall","src":"649:33:2"},"nativeSrc":"649:33:2","nodeType":"YulExpressionStatement","src":"649:33:2"}]},"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"545:143:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"586:6:2","nodeType":"YulTypedName","src":"586:6:2","type":""},{"name":"end","nativeSrc":"594:3:2","nodeType":"YulTypedName","src":"594:3:2","type":""}],"returnVariables":[{"name":"value","nativeSrc":"602:5:2","nodeType":"YulTypedName","src":"602:5:2","type":""}],"src":"545:143:2"},{"body":{"nativeSrc":"771:274:2","nodeType":"YulBlock","src":"771:274:2","statements":[{"body":{"nativeSrc":"817:83:2","nodeType":"YulBlock","src":"817:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"819:77:2","nodeType":"YulIdentifier","src":"819:77:2"},"nativeSrc":"819:79:2","nodeType":"YulFunctionCall","src":"819:79:2"},"nativeSrc":"819:79:2","nodeType":"YulExpressionStatement","src":"819:79:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"792:7:2","nodeType":"YulIdentifier","src":"792:7:2"},{"name":"headStart","nativeSrc":"801:9:2","nodeType":"YulIdentifier","src":"801:9:2"}],"functionName":{"name":"sub","nativeSrc":"788:3:2","nodeType":"YulIdentifier","src":"788:3:2"},"nativeSrc":"788:23:2","nodeType":"YulFunctionCall","src":"788:23:2"},{"kind":"number","nativeSrc":"813:2:2","nodeType":"YulLiteral","src":"813:2:2","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"784:3:2","nodeType":"YulIdentifier","src":"784:3:2"},"nativeSrc":"784:32:2","nodeType":"YulFunctionCall","src":"784:32:2"},"nativeSrc":"781:119:2","nodeType":"YulIf","src":"781:119:2"},{"nativeSrc":"910:128:2","nodeType":"YulBlock","src":"910:128:2","statements":[{"nativeSrc":"925:15:2","nodeType":"YulVariableDeclaration","src":"925:15:2","value":{"kind":"number","nativeSrc":"939:1:2","nodeType":"YulLiteral","src":"939:1:2","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"929:6:2","nodeType":"YulTypedName","src":"929:6:2","type":""}]},{"nativeSrc":"954:74:2","nodeType":"YulAssignment","src":"954:74:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1000:9:2","nodeType":"YulIdentifier","src":"1000:9:2"},{"name":"offset","nativeSrc":"1011:6:2","nodeType":"YulIdentifier","src":"1011:6:2"}],"functionName":{"name":"add","nativeSrc":"996:3:2","nodeType":"YulIdentifier","src":"996:3:2"},"nativeSrc":"996:22:2","nodeType":"YulFunctionCall","src":"996:22:2"},{"name":"dataEnd","nativeSrc":"1020:7:2","nodeType":"YulIdentifier","src":"1020:7:2"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"964:31:2","nodeType":"YulIdentifier","src":"964:31:2"},"nativeSrc":"964:64:2","nodeType":"YulFunctionCall","src":"964:64:2"},"variableNames":[{"name":"value0","nativeSrc":"954:6:2","nodeType":"YulIdentifier","src":"954:6:2"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"694:351:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"741:9:2","nodeType":"YulTypedName","src":"741:9:2","type":""},{"name":"dataEnd","nativeSrc":"752:7:2","nodeType":"YulTypedName","src":"752:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"764:6:2","nodeType":"YulTypedName","src":"764:6:2","type":""}],"src":"694:351:2"},{"body":{"nativeSrc":"1147:73:2","nodeType":"YulBlock","src":"1147:73:2","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"1164:3:2","nodeType":"YulIdentifier","src":"1164:3:2"},{"name":"length","nativeSrc":"1169:6:2","nodeType":"YulIdentifier","src":"1169:6:2"}],"functionName":{"name":"mstore","nativeSrc":"1157:6:2","nodeType":"YulIdentifier","src":"1157:6:2"},"nativeSrc":"1157:19:2","nodeType":"YulFunctionCall","src":"1157:19:2"},"nativeSrc":"1157:19:2","nodeType":"YulExpressionStatement","src":"1157:19:2"},{"nativeSrc":"1185:29:2","nodeType":"YulAssignment","src":"1185:29:2","value":{"arguments":[{"name":"pos","nativeSrc":"1204:3:2","nodeType":"YulIdentifier","src":"1204:3:2"},{"kind":"number","nativeSrc":"1209:4:2","nodeType":"YulLiteral","src":"1209:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1200:3:2","nodeType":"YulIdentifier","src":"1200:3:2"},"nativeSrc":"1200:14:2","nodeType":"YulFunctionCall","src":"1200:14:2"},"variableNames":[{"name":"updated_pos","nativeSrc":"1185:11:2","nodeType":"YulIdentifier","src":"1185:11:2"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"1051:169:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1119:3:2","nodeType":"YulTypedName","src":"1119:3:2","type":""},{"name":"length","nativeSrc":"1124:6:2","nodeType":"YulTypedName","src":"1124:6:2","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"1135:11:2","nodeType":"YulTypedName","src":"1135:11:2","type":""}],"src":"1051:169:2"},{"body":{"nativeSrc":"1332:116:2","nodeType":"YulBlock","src":"1332:116:2","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1354:6:2","nodeType":"YulIdentifier","src":"1354:6:2"},{"kind":"number","nativeSrc":"1362:1:2","nodeType":"YulLiteral","src":"1362:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1350:3:2","nodeType":"YulIdentifier","src":"1350:3:2"},"nativeSrc":"1350:14:2","nodeType":"YulFunctionCall","src":"1350:14:2"},{"hexValue":"556e6c6f636b2074696d652073686f756c6420626520696e2074686520667574","kind":"string","nativeSrc":"1366:34:2","nodeType":"YulLiteral","src":"1366:34:2","type":"","value":"Unlock time should be in the fut"}],"functionName":{"name":"mstore","nativeSrc":"1343:6:2","nodeType":"YulIdentifier","src":"1343:6:2"},"nativeSrc":"1343:58:2","nodeType":"YulFunctionCall","src":"1343:58:2"},"nativeSrc":"1343:58:2","nodeType":"YulExpressionStatement","src":"1343:58:2"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1422:6:2","nodeType":"YulIdentifier","src":"1422:6:2"},{"kind":"number","nativeSrc":"1430:2:2","nodeType":"YulLiteral","src":"1430:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1418:3:2","nodeType":"YulIdentifier","src":"1418:3:2"},"nativeSrc":"1418:15:2","nodeType":"YulFunctionCall","src":"1418:15:2"},{"hexValue":"757265","kind":"string","nativeSrc":"1435:5:2","nodeType":"YulLiteral","src":"1435:5:2","type":"","value":"ure"}],"functionName":{"name":"mstore","nativeSrc":"1411:6:2","nodeType":"YulIdentifier","src":"1411:6:2"},"nativeSrc":"1411:30:2","nodeType":"YulFunctionCall","src":"1411:30:2"},"nativeSrc":"1411:30:2","nodeType":"YulExpressionStatement","src":"1411:30:2"}]},"name":"store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","nativeSrc":"1226:222:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"1324:6:2","nodeType":"YulTypedName","src":"1324:6:2","type":""}],"src":"1226:222:2"},{"body":{"nativeSrc":"1600:220:2","nodeType":"YulBlock","src":"1600:220:2","statements":[{"nativeSrc":"1610:74:2","nodeType":"YulAssignment","src":"1610:74:2","value":{"arguments":[{"name":"pos","nativeSrc":"1676:3:2","nodeType":"YulIdentifier","src":"1676:3:2"},{"kind":"number","nativeSrc":"1681:2:2","nodeType":"YulLiteral","src":"1681:2:2","type":"","value":"35"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"1617:58:2","nodeType":"YulIdentifier","src":"1617:58:2"},"nativeSrc":"1617:67:2","nodeType":"YulFunctionCall","src":"1617:67:2"},"variableNames":[{"name":"pos","nativeSrc":"1610:3:2","nodeType":"YulIdentifier","src":"1610:3:2"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1782:3:2","nodeType":"YulIdentifier","src":"1782:3:2"}],"functionName":{"name":"store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","nativeSrc":"1693:88:2","nodeType":"YulIdentifier","src":"1693:88:2"},"nativeSrc":"1693:93:2","nodeType":"YulFunctionCall","src":"1693:93:2"},"nativeSrc":"1693:93:2","nodeType":"YulExpressionStatement","src":"1693:93:2"},{"nativeSrc":"1795:19:2","nodeType":"YulAssignment","src":"1795:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"1806:3:2","nodeType":"YulIdentifier","src":"1806:3:2"},{"kind":"number","nativeSrc":"1811:2:2","nodeType":"YulLiteral","src":"1811:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1802:3:2","nodeType":"YulIdentifier","src":"1802:3:2"},"nativeSrc":"1802:12:2","nodeType":"YulFunctionCall","src":"1802:12:2"},"variableNames":[{"name":"end","nativeSrc":"1795:3:2","nodeType":"YulIdentifier","src":"1795:3:2"}]}]},"name":"abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack","nativeSrc":"1454:366:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1588:3:2","nodeType":"YulTypedName","src":"1588:3:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1596:3:2","nodeType":"YulTypedName","src":"1596:3:2","type":""}],"src":"1454:366:2"},{"body":{"nativeSrc":"1997:248:2","nodeType":"YulBlock","src":"1997:248:2","statements":[{"nativeSrc":"2007:26:2","nodeType":"YulAssignment","src":"2007:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"2019:9:2","nodeType":"YulIdentifier","src":"2019:9:2"},{"kind":"number","nativeSrc":"2030:2:2","nodeType":"YulLiteral","src":"2030:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2015:3:2","nodeType":"YulIdentifier","src":"2015:3:2"},"nativeSrc":"2015:18:2","nodeType":"YulFunctionCall","src":"2015:18:2"},"variableNames":[{"name":"tail","nativeSrc":"2007:4:2","nodeType":"YulIdentifier","src":"2007:4:2"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2054:9:2","nodeType":"YulIdentifier","src":"2054:9:2"},{"kind":"number","nativeSrc":"2065:1:2","nodeType":"YulLiteral","src":"2065:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"2050:3:2","nodeType":"YulIdentifier","src":"2050:3:2"},"nativeSrc":"2050:17:2","nodeType":"YulFunctionCall","src":"2050:17:2"},{"arguments":[{"name":"tail","nativeSrc":"2073:4:2","nodeType":"YulIdentifier","src":"2073:4:2"},{"name":"headStart","nativeSrc":"2079:9:2","nodeType":"YulIdentifier","src":"2079:9:2"}],"functionName":{"name":"sub","nativeSrc":"2069:3:2","nodeType":"YulIdentifier","src":"2069:3:2"},"nativeSrc":"2069:20:2","nodeType":"YulFunctionCall","src":"2069:20:2"}],"functionName":{"name":"mstore","nativeSrc":"2043:6:2","nodeType":"YulIdentifier","src":"2043:6:2"},"nativeSrc":"2043:47:2","nodeType":"YulFunctionCall","src":"2043:47:2"},"nativeSrc":"2043:47:2","nodeType":"YulExpressionStatement","src":"2043:47:2"},{"nativeSrc":"2099:139:2","nodeType":"YulAssignment","src":"2099:139:2","value":{"arguments":[{"name":"tail","nativeSrc":"2233:4:2","nodeType":"YulIdentifier","src":"2233:4:2"}],"functionName":{"name":"abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack","nativeSrc":"2107:124:2","nodeType":"YulIdentifier","src":"2107:124:2"},"nativeSrc":"2107:131:2","nodeType":"YulFunctionCall","src":"2107:131:2"},"variableNames":[{"name":"tail","nativeSrc":"2099:4:2","nodeType":"YulIdentifier","src":"2099:4:2"}]}]},"name":"abi_encode_tuple_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1826:419:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1977:9:2","nodeType":"YulTypedName","src":"1977:9:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1992:4:2","nodeType":"YulTypedName","src":"1992:4:2","type":""}],"src":"1826:419:2"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413(memPtr) {\n\n mstore(add(memPtr, 0), \"Unlock time should be in the fut\")\n\n mstore(add(memPtr, 32), \"ure\")\n\n }\n\n function abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n store_literal_in_memory_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":2,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516105d83803806105d8833981810160405281019061002591906100f0565b804210610067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161005e906101a0565b60405180910390fd5b8060008190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506101c0565b600080fd5b6000819050919050565b6100cd816100ba565b81146100d857600080fd5b50565b6000815190506100ea816100c4565b92915050565b600060208284031215610106576101056100b5565b5b6000610114848285016100db565b91505092915050565b600082825260208201905092915050565b7f556e6c6f636b2074696d652073686f756c6420626520696e207468652066757460008201527f7572650000000000000000000000000000000000000000000000000000000000602082015250565b600061018a60238361011d565b91506101958261012e565b604082019050919050565b600060208201905081810360008301526101b98161017d565b9050919050565b610409806101cf6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100645780638da5cb5b1461006e575b600080fd5b61004e61008c565b60405161005b919061024a565b60405180910390f35b61006c610092565b005b61007661020b565b60405161008391906102a6565b60405180910390f35b60005481565b6000544210156100d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ce9061031e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015e9061038a565b60405180910390fd5b7fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b9347426040516101989291906103aa565b60405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610208573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000819050919050565b61024481610231565b82525050565b600060208201905061025f600083018461023b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061029082610265565b9050919050565b6102a081610285565b82525050565b60006020820190506102bb6000830184610297565b92915050565b600082825260208201905092915050565b7f596f752063616e27742077697468647261772079657400000000000000000000600082015250565b60006103086016836102c1565b9150610313826102d2565b602082019050919050565b60006020820190508181036000830152610337816102fb565b9050919050565b7f596f75206172656e277420746865206f776e6572000000000000000000000000600082015250565b60006103746014836102c1565b915061037f8261033e565b602082019050919050565b600060208201905081810360008301526103a381610367565b9050919050565b60006040820190506103bf600083018561023b565b6103cc602083018461023b565b939250505056fea26469706673582212202d2006ef26cbefcc4deab66c32f5ff5efb638f080c7490b6633879942caf232764736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x5D8 CODESIZE SUB DUP1 PUSH2 0x5D8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x25 SWAP2 SWAP1 PUSH2 0xF0 JUMP JUMPDEST DUP1 TIMESTAMP LT PUSH2 0x67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E SWAP1 PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCD DUP2 PUSH2 0xBA JUMP JUMPDEST DUP2 EQ PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xEA DUP2 PUSH2 0xC4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x106 JUMPI PUSH2 0x105 PUSH2 0xB5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x114 DUP5 DUP3 DUP6 ADD PUSH2 0xDB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x556E6C6F636B2074696D652073686F756C6420626520696E2074686520667574 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7572650000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A PUSH1 0x23 DUP4 PUSH2 0x11D JUMP JUMPDEST SWAP2 POP PUSH2 0x195 DUP3 PUSH2 0x12E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B9 DUP2 PUSH2 0x17D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x409 DUP1 PUSH2 0x1CF PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x251C1AA3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x24A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x92 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x76 PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x83 SWAP2 SWAP1 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCE SWAP1 PUSH2 0x31E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x167 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15E SWAP1 PUSH2 0x38A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xBF2ED60BD5B5965D685680C01195C9514E4382E28E3A5A2D2D5244BF59411B93 SELFBALANCE TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x198 SWAP3 SWAP2 SWAP1 PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x244 DUP2 PUSH2 0x231 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x23B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x290 DUP3 PUSH2 0x265 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A0 DUP2 PUSH2 0x285 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2BB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x297 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x596F752063616E27742077697468647261772079657400000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x308 PUSH1 0x16 DUP4 PUSH2 0x2C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x313 DUP3 PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x337 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x596F75206172656E277420746865206F776E6572000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374 PUSH1 0x14 DUP4 PUSH2 0x2C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x37F DUP3 PUSH2 0x33E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A3 DUP2 PUSH2 0x367 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3BF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x23B JUMP JUMPDEST PUSH2 0x3CC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x23B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D KECCAK256 MOD 0xEF 0x26 0xCB 0xEF 0xCC 0x4D 0xEA 0xB6 PUSH13 0x32F5FF5EFB638F080C7490B663 CODESIZE PUSH26 0x942CAF232764736F6C634300081C003300000000000000000000 ","sourceMap":"141:866:0:-:0;;;271:238;;;;;;;;;;;;;;;;;;;;;:::i;:::-;358:11;340:15;:29;319:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;454:11;441:10;:24;;;;491:10;475:5;;:27;;;;;;;;;;;;;;;;;;271:238;141:866;;88:117:2;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:143::-;602:5;633:6;627:13;618:22;;649:33;676:5;649:33;:::i;:::-;545:143;;;;:::o;694:351::-;764:6;813:2;801:9;792:7;788:23;784:32;781:119;;;819:79;;:::i;:::-;781:119;939:1;964:64;1020:7;1011:6;1000:9;996:22;964:64;:::i;:::-;954:74;;910:128;694:351;;;;:::o;1051:169::-;1135:11;1169:6;1164:3;1157:19;1209:4;1204:3;1200:14;1185:29;;1051:169;;;;:::o;1226:222::-;1366:34;1362:1;1354:6;1350:14;1343:58;1435:5;1430:2;1422:6;1418:15;1411:30;1226:222;:::o;1454:366::-;1596:3;1617:67;1681:2;1676:3;1617:67;:::i;:::-;1610:74;;1693:93;1782:3;1693:93;:::i;:::-;1811:2;1806:3;1802:12;1795:19;;1454:366;;;:::o;1826:419::-;1992:4;2030:2;2019:9;2015:18;2007:26;;2079:9;2073:4;2069:20;2065:1;2054:9;2050:17;2043:47;2107:131;2233:4;2107:131;:::i;:::-;2099:139;;1826:419;;;:::o;141:866:0:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@owner_5":{"entryPoint":523,"id":5,"parameterSlots":0,"returnSlots":0},"@unlockTime_3":{"entryPoint":140,"id":3,"parameterSlots":0,"returnSlots":0},"@withdraw_77":{"entryPoint":146,"id":77,"parameterSlots":0,"returnSlots":0},"abi_encode_t_address_payable_to_t_address_payable_fromStack":{"entryPoint":663,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack":{"entryPoint":763,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack":{"entryPoint":871,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":571,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed":{"entryPoint":678,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":798,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":906,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":586,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":938,"id":null,"parameterSlots":3,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":705,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address_payable":{"entryPoint":645,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":613,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":561,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8":{"entryPoint":722,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a":{"entryPoint":830,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:3550:2","nodeType":"YulBlock","src":"0:3550:2","statements":[{"body":{"nativeSrc":"52:32:2","nodeType":"YulBlock","src":"52:32:2","statements":[{"nativeSrc":"62:16:2","nodeType":"YulAssignment","src":"62:16:2","value":{"name":"value","nativeSrc":"73:5:2","nodeType":"YulIdentifier","src":"73:5:2"},"variableNames":[{"name":"cleaned","nativeSrc":"62:7:2","nodeType":"YulIdentifier","src":"62:7:2"}]}]},"name":"cleanup_t_uint256","nativeSrc":"7:77:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"34:5:2","nodeType":"YulTypedName","src":"34:5:2","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"44:7:2","nodeType":"YulTypedName","src":"44:7:2","type":""}],"src":"7:77:2"},{"body":{"nativeSrc":"155:53:2","nodeType":"YulBlock","src":"155:53:2","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"172:3:2","nodeType":"YulIdentifier","src":"172:3:2"},{"arguments":[{"name":"value","nativeSrc":"195:5:2","nodeType":"YulIdentifier","src":"195:5:2"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"177:17:2","nodeType":"YulIdentifier","src":"177:17:2"},"nativeSrc":"177:24:2","nodeType":"YulFunctionCall","src":"177:24:2"}],"functionName":{"name":"mstore","nativeSrc":"165:6:2","nodeType":"YulIdentifier","src":"165:6:2"},"nativeSrc":"165:37:2","nodeType":"YulFunctionCall","src":"165:37:2"},"nativeSrc":"165:37:2","nodeType":"YulExpressionStatement","src":"165:37:2"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"90:118:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"143:5:2","nodeType":"YulTypedName","src":"143:5:2","type":""},{"name":"pos","nativeSrc":"150:3:2","nodeType":"YulTypedName","src":"150:3:2","type":""}],"src":"90:118:2"},{"body":{"nativeSrc":"312:124:2","nodeType":"YulBlock","src":"312:124:2","statements":[{"nativeSrc":"322:26:2","nodeType":"YulAssignment","src":"322:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"334:9:2","nodeType":"YulIdentifier","src":"334:9:2"},{"kind":"number","nativeSrc":"345:2:2","nodeType":"YulLiteral","src":"345:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"330:3:2","nodeType":"YulIdentifier","src":"330:3:2"},"nativeSrc":"330:18:2","nodeType":"YulFunctionCall","src":"330:18:2"},"variableNames":[{"name":"tail","nativeSrc":"322:4:2","nodeType":"YulIdentifier","src":"322:4:2"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"402:6:2","nodeType":"YulIdentifier","src":"402:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"415:9:2","nodeType":"YulIdentifier","src":"415:9:2"},{"kind":"number","nativeSrc":"426:1:2","nodeType":"YulLiteral","src":"426:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"411:3:2","nodeType":"YulIdentifier","src":"411:3:2"},"nativeSrc":"411:17:2","nodeType":"YulFunctionCall","src":"411:17:2"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"358:43:2","nodeType":"YulIdentifier","src":"358:43:2"},"nativeSrc":"358:71:2","nodeType":"YulFunctionCall","src":"358:71:2"},"nativeSrc":"358:71:2","nodeType":"YulExpressionStatement","src":"358:71:2"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"214:222:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"284:9:2","nodeType":"YulTypedName","src":"284:9:2","type":""},{"name":"value0","nativeSrc":"296:6:2","nodeType":"YulTypedName","src":"296:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"307:4:2","nodeType":"YulTypedName","src":"307:4:2","type":""}],"src":"214:222:2"},{"body":{"nativeSrc":"487:81:2","nodeType":"YulBlock","src":"487:81:2","statements":[{"nativeSrc":"497:65:2","nodeType":"YulAssignment","src":"497:65:2","value":{"arguments":[{"name":"value","nativeSrc":"512:5:2","nodeType":"YulIdentifier","src":"512:5:2"},{"kind":"number","nativeSrc":"519:42:2","nodeType":"YulLiteral","src":"519:42:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"508:3:2","nodeType":"YulIdentifier","src":"508:3:2"},"nativeSrc":"508:54:2","nodeType":"YulFunctionCall","src":"508:54:2"},"variableNames":[{"name":"cleaned","nativeSrc":"497:7:2","nodeType":"YulIdentifier","src":"497:7:2"}]}]},"name":"cleanup_t_uint160","nativeSrc":"442:126:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"469:5:2","nodeType":"YulTypedName","src":"469:5:2","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"479:7:2","nodeType":"YulTypedName","src":"479:7:2","type":""}],"src":"442:126:2"},{"body":{"nativeSrc":"627:51:2","nodeType":"YulBlock","src":"627:51:2","statements":[{"nativeSrc":"637:35:2","nodeType":"YulAssignment","src":"637:35:2","value":{"arguments":[{"name":"value","nativeSrc":"666:5:2","nodeType":"YulIdentifier","src":"666:5:2"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"648:17:2","nodeType":"YulIdentifier","src":"648:17:2"},"nativeSrc":"648:24:2","nodeType":"YulFunctionCall","src":"648:24:2"},"variableNames":[{"name":"cleaned","nativeSrc":"637:7:2","nodeType":"YulIdentifier","src":"637:7:2"}]}]},"name":"cleanup_t_address_payable","nativeSrc":"574:104:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"609:5:2","nodeType":"YulTypedName","src":"609:5:2","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"619:7:2","nodeType":"YulTypedName","src":"619:7:2","type":""}],"src":"574:104:2"},{"body":{"nativeSrc":"765:61:2","nodeType":"YulBlock","src":"765:61:2","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"782:3:2","nodeType":"YulIdentifier","src":"782:3:2"},{"arguments":[{"name":"value","nativeSrc":"813:5:2","nodeType":"YulIdentifier","src":"813:5:2"}],"functionName":{"name":"cleanup_t_address_payable","nativeSrc":"787:25:2","nodeType":"YulIdentifier","src":"787:25:2"},"nativeSrc":"787:32:2","nodeType":"YulFunctionCall","src":"787:32:2"}],"functionName":{"name":"mstore","nativeSrc":"775:6:2","nodeType":"YulIdentifier","src":"775:6:2"},"nativeSrc":"775:45:2","nodeType":"YulFunctionCall","src":"775:45:2"},"nativeSrc":"775:45:2","nodeType":"YulExpressionStatement","src":"775:45:2"}]},"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nativeSrc":"684:142:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"753:5:2","nodeType":"YulTypedName","src":"753:5:2","type":""},{"name":"pos","nativeSrc":"760:3:2","nodeType":"YulTypedName","src":"760:3:2","type":""}],"src":"684:142:2"},{"body":{"nativeSrc":"946:140:2","nodeType":"YulBlock","src":"946:140:2","statements":[{"nativeSrc":"956:26:2","nodeType":"YulAssignment","src":"956:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"968:9:2","nodeType":"YulIdentifier","src":"968:9:2"},{"kind":"number","nativeSrc":"979:2:2","nodeType":"YulLiteral","src":"979:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"964:3:2","nodeType":"YulIdentifier","src":"964:3:2"},"nativeSrc":"964:18:2","nodeType":"YulFunctionCall","src":"964:18:2"},"variableNames":[{"name":"tail","nativeSrc":"956:4:2","nodeType":"YulIdentifier","src":"956:4:2"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"1052:6:2","nodeType":"YulIdentifier","src":"1052:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"1065:9:2","nodeType":"YulIdentifier","src":"1065:9:2"},{"kind":"number","nativeSrc":"1076:1:2","nodeType":"YulLiteral","src":"1076:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1061:3:2","nodeType":"YulIdentifier","src":"1061:3:2"},"nativeSrc":"1061:17:2","nodeType":"YulFunctionCall","src":"1061:17:2"}],"functionName":{"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nativeSrc":"992:59:2","nodeType":"YulIdentifier","src":"992:59:2"},"nativeSrc":"992:87:2","nodeType":"YulFunctionCall","src":"992:87:2"},"nativeSrc":"992:87:2","nodeType":"YulExpressionStatement","src":"992:87:2"}]},"name":"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed","nativeSrc":"832:254:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"918:9:2","nodeType":"YulTypedName","src":"918:9:2","type":""},{"name":"value0","nativeSrc":"930:6:2","nodeType":"YulTypedName","src":"930:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"941:4:2","nodeType":"YulTypedName","src":"941:4:2","type":""}],"src":"832:254:2"},{"body":{"nativeSrc":"1188:73:2","nodeType":"YulBlock","src":"1188:73:2","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"1205:3:2","nodeType":"YulIdentifier","src":"1205:3:2"},{"name":"length","nativeSrc":"1210:6:2","nodeType":"YulIdentifier","src":"1210:6:2"}],"functionName":{"name":"mstore","nativeSrc":"1198:6:2","nodeType":"YulIdentifier","src":"1198:6:2"},"nativeSrc":"1198:19:2","nodeType":"YulFunctionCall","src":"1198:19:2"},"nativeSrc":"1198:19:2","nodeType":"YulExpressionStatement","src":"1198:19:2"},{"nativeSrc":"1226:29:2","nodeType":"YulAssignment","src":"1226:29:2","value":{"arguments":[{"name":"pos","nativeSrc":"1245:3:2","nodeType":"YulIdentifier","src":"1245:3:2"},{"kind":"number","nativeSrc":"1250:4:2","nodeType":"YulLiteral","src":"1250:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1241:3:2","nodeType":"YulIdentifier","src":"1241:3:2"},"nativeSrc":"1241:14:2","nodeType":"YulFunctionCall","src":"1241:14:2"},"variableNames":[{"name":"updated_pos","nativeSrc":"1226:11:2","nodeType":"YulIdentifier","src":"1226:11:2"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"1092:169:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1160:3:2","nodeType":"YulTypedName","src":"1160:3:2","type":""},{"name":"length","nativeSrc":"1165:6:2","nodeType":"YulTypedName","src":"1165:6:2","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"1176:11:2","nodeType":"YulTypedName","src":"1176:11:2","type":""}],"src":"1092:169:2"},{"body":{"nativeSrc":"1373:66:2","nodeType":"YulBlock","src":"1373:66:2","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1395:6:2","nodeType":"YulIdentifier","src":"1395:6:2"},{"kind":"number","nativeSrc":"1403:1:2","nodeType":"YulLiteral","src":"1403:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1391:3:2","nodeType":"YulIdentifier","src":"1391:3:2"},"nativeSrc":"1391:14:2","nodeType":"YulFunctionCall","src":"1391:14:2"},{"hexValue":"596f752063616e277420776974686472617720796574","kind":"string","nativeSrc":"1407:24:2","nodeType":"YulLiteral","src":"1407:24:2","type":"","value":"You can't withdraw yet"}],"functionName":{"name":"mstore","nativeSrc":"1384:6:2","nodeType":"YulIdentifier","src":"1384:6:2"},"nativeSrc":"1384:48:2","nodeType":"YulFunctionCall","src":"1384:48:2"},"nativeSrc":"1384:48:2","nodeType":"YulExpressionStatement","src":"1384:48:2"}]},"name":"store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","nativeSrc":"1267:172:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"1365:6:2","nodeType":"YulTypedName","src":"1365:6:2","type":""}],"src":"1267:172:2"},{"body":{"nativeSrc":"1591:220:2","nodeType":"YulBlock","src":"1591:220:2","statements":[{"nativeSrc":"1601:74:2","nodeType":"YulAssignment","src":"1601:74:2","value":{"arguments":[{"name":"pos","nativeSrc":"1667:3:2","nodeType":"YulIdentifier","src":"1667:3:2"},{"kind":"number","nativeSrc":"1672:2:2","nodeType":"YulLiteral","src":"1672:2:2","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"1608:58:2","nodeType":"YulIdentifier","src":"1608:58:2"},"nativeSrc":"1608:67:2","nodeType":"YulFunctionCall","src":"1608:67:2"},"variableNames":[{"name":"pos","nativeSrc":"1601:3:2","nodeType":"YulIdentifier","src":"1601:3:2"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1773:3:2","nodeType":"YulIdentifier","src":"1773:3:2"}],"functionName":{"name":"store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","nativeSrc":"1684:88:2","nodeType":"YulIdentifier","src":"1684:88:2"},"nativeSrc":"1684:93:2","nodeType":"YulFunctionCall","src":"1684:93:2"},"nativeSrc":"1684:93:2","nodeType":"YulExpressionStatement","src":"1684:93:2"},{"nativeSrc":"1786:19:2","nodeType":"YulAssignment","src":"1786:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"1797:3:2","nodeType":"YulIdentifier","src":"1797:3:2"},{"kind":"number","nativeSrc":"1802:2:2","nodeType":"YulLiteral","src":"1802:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1793:3:2","nodeType":"YulIdentifier","src":"1793:3:2"},"nativeSrc":"1793:12:2","nodeType":"YulFunctionCall","src":"1793:12:2"},"variableNames":[{"name":"end","nativeSrc":"1786:3:2","nodeType":"YulIdentifier","src":"1786:3:2"}]}]},"name":"abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack","nativeSrc":"1445:366:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1579:3:2","nodeType":"YulTypedName","src":"1579:3:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1587:3:2","nodeType":"YulTypedName","src":"1587:3:2","type":""}],"src":"1445:366:2"},{"body":{"nativeSrc":"1988:248:2","nodeType":"YulBlock","src":"1988:248:2","statements":[{"nativeSrc":"1998:26:2","nodeType":"YulAssignment","src":"1998:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"2010:9:2","nodeType":"YulIdentifier","src":"2010:9:2"},{"kind":"number","nativeSrc":"2021:2:2","nodeType":"YulLiteral","src":"2021:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2006:3:2","nodeType":"YulIdentifier","src":"2006:3:2"},"nativeSrc":"2006:18:2","nodeType":"YulFunctionCall","src":"2006:18:2"},"variableNames":[{"name":"tail","nativeSrc":"1998:4:2","nodeType":"YulIdentifier","src":"1998:4:2"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2045:9:2","nodeType":"YulIdentifier","src":"2045:9:2"},{"kind":"number","nativeSrc":"2056:1:2","nodeType":"YulLiteral","src":"2056:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"2041:3:2","nodeType":"YulIdentifier","src":"2041:3:2"},"nativeSrc":"2041:17:2","nodeType":"YulFunctionCall","src":"2041:17:2"},{"arguments":[{"name":"tail","nativeSrc":"2064:4:2","nodeType":"YulIdentifier","src":"2064:4:2"},{"name":"headStart","nativeSrc":"2070:9:2","nodeType":"YulIdentifier","src":"2070:9:2"}],"functionName":{"name":"sub","nativeSrc":"2060:3:2","nodeType":"YulIdentifier","src":"2060:3:2"},"nativeSrc":"2060:20:2","nodeType":"YulFunctionCall","src":"2060:20:2"}],"functionName":{"name":"mstore","nativeSrc":"2034:6:2","nodeType":"YulIdentifier","src":"2034:6:2"},"nativeSrc":"2034:47:2","nodeType":"YulFunctionCall","src":"2034:47:2"},"nativeSrc":"2034:47:2","nodeType":"YulExpressionStatement","src":"2034:47:2"},{"nativeSrc":"2090:139:2","nodeType":"YulAssignment","src":"2090:139:2","value":{"arguments":[{"name":"tail","nativeSrc":"2224:4:2","nodeType":"YulIdentifier","src":"2224:4:2"}],"functionName":{"name":"abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack","nativeSrc":"2098:124:2","nodeType":"YulIdentifier","src":"2098:124:2"},"nativeSrc":"2098:131:2","nodeType":"YulFunctionCall","src":"2098:131:2"},"variableNames":[{"name":"tail","nativeSrc":"2090:4:2","nodeType":"YulIdentifier","src":"2090:4:2"}]}]},"name":"abi_encode_tuple_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1817:419:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1968:9:2","nodeType":"YulTypedName","src":"1968:9:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1983:4:2","nodeType":"YulTypedName","src":"1983:4:2","type":""}],"src":"1817:419:2"},{"body":{"nativeSrc":"2348:64:2","nodeType":"YulBlock","src":"2348:64:2","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"2370:6:2","nodeType":"YulIdentifier","src":"2370:6:2"},{"kind":"number","nativeSrc":"2378:1:2","nodeType":"YulLiteral","src":"2378:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"2366:3:2","nodeType":"YulIdentifier","src":"2366:3:2"},"nativeSrc":"2366:14:2","nodeType":"YulFunctionCall","src":"2366:14:2"},{"hexValue":"596f75206172656e277420746865206f776e6572","kind":"string","nativeSrc":"2382:22:2","nodeType":"YulLiteral","src":"2382:22:2","type":"","value":"You aren't the owner"}],"functionName":{"name":"mstore","nativeSrc":"2359:6:2","nodeType":"YulIdentifier","src":"2359:6:2"},"nativeSrc":"2359:46:2","nodeType":"YulFunctionCall","src":"2359:46:2"},"nativeSrc":"2359:46:2","nodeType":"YulExpressionStatement","src":"2359:46:2"}]},"name":"store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","nativeSrc":"2242:170:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"2340:6:2","nodeType":"YulTypedName","src":"2340:6:2","type":""}],"src":"2242:170:2"},{"body":{"nativeSrc":"2564:220:2","nodeType":"YulBlock","src":"2564:220:2","statements":[{"nativeSrc":"2574:74:2","nodeType":"YulAssignment","src":"2574:74:2","value":{"arguments":[{"name":"pos","nativeSrc":"2640:3:2","nodeType":"YulIdentifier","src":"2640:3:2"},{"kind":"number","nativeSrc":"2645:2:2","nodeType":"YulLiteral","src":"2645:2:2","type":"","value":"20"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"2581:58:2","nodeType":"YulIdentifier","src":"2581:58:2"},"nativeSrc":"2581:67:2","nodeType":"YulFunctionCall","src":"2581:67:2"},"variableNames":[{"name":"pos","nativeSrc":"2574:3:2","nodeType":"YulIdentifier","src":"2574:3:2"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2746:3:2","nodeType":"YulIdentifier","src":"2746:3:2"}],"functionName":{"name":"store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","nativeSrc":"2657:88:2","nodeType":"YulIdentifier","src":"2657:88:2"},"nativeSrc":"2657:93:2","nodeType":"YulFunctionCall","src":"2657:93:2"},"nativeSrc":"2657:93:2","nodeType":"YulExpressionStatement","src":"2657:93:2"},{"nativeSrc":"2759:19:2","nodeType":"YulAssignment","src":"2759:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"2770:3:2","nodeType":"YulIdentifier","src":"2770:3:2"},{"kind":"number","nativeSrc":"2775:2:2","nodeType":"YulLiteral","src":"2775:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2766:3:2","nodeType":"YulIdentifier","src":"2766:3:2"},"nativeSrc":"2766:12:2","nodeType":"YulFunctionCall","src":"2766:12:2"},"variableNames":[{"name":"end","nativeSrc":"2759:3:2","nodeType":"YulIdentifier","src":"2759:3:2"}]}]},"name":"abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack","nativeSrc":"2418:366:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"2552:3:2","nodeType":"YulTypedName","src":"2552:3:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"2560:3:2","nodeType":"YulTypedName","src":"2560:3:2","type":""}],"src":"2418:366:2"},{"body":{"nativeSrc":"2961:248:2","nodeType":"YulBlock","src":"2961:248:2","statements":[{"nativeSrc":"2971:26:2","nodeType":"YulAssignment","src":"2971:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"2983:9:2","nodeType":"YulIdentifier","src":"2983:9:2"},{"kind":"number","nativeSrc":"2994:2:2","nodeType":"YulLiteral","src":"2994:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2979:3:2","nodeType":"YulIdentifier","src":"2979:3:2"},"nativeSrc":"2979:18:2","nodeType":"YulFunctionCall","src":"2979:18:2"},"variableNames":[{"name":"tail","nativeSrc":"2971:4:2","nodeType":"YulIdentifier","src":"2971:4:2"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3018:9:2","nodeType":"YulIdentifier","src":"3018:9:2"},{"kind":"number","nativeSrc":"3029:1:2","nodeType":"YulLiteral","src":"3029:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3014:3:2","nodeType":"YulIdentifier","src":"3014:3:2"},"nativeSrc":"3014:17:2","nodeType":"YulFunctionCall","src":"3014:17:2"},{"arguments":[{"name":"tail","nativeSrc":"3037:4:2","nodeType":"YulIdentifier","src":"3037:4:2"},{"name":"headStart","nativeSrc":"3043:9:2","nodeType":"YulIdentifier","src":"3043:9:2"}],"functionName":{"name":"sub","nativeSrc":"3033:3:2","nodeType":"YulIdentifier","src":"3033:3:2"},"nativeSrc":"3033:20:2","nodeType":"YulFunctionCall","src":"3033:20:2"}],"functionName":{"name":"mstore","nativeSrc":"3007:6:2","nodeType":"YulIdentifier","src":"3007:6:2"},"nativeSrc":"3007:47:2","nodeType":"YulFunctionCall","src":"3007:47:2"},"nativeSrc":"3007:47:2","nodeType":"YulExpressionStatement","src":"3007:47:2"},{"nativeSrc":"3063:139:2","nodeType":"YulAssignment","src":"3063:139:2","value":{"arguments":[{"name":"tail","nativeSrc":"3197:4:2","nodeType":"YulIdentifier","src":"3197:4:2"}],"functionName":{"name":"abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack","nativeSrc":"3071:124:2","nodeType":"YulIdentifier","src":"3071:124:2"},"nativeSrc":"3071:131:2","nodeType":"YulFunctionCall","src":"3071:131:2"},"variableNames":[{"name":"tail","nativeSrc":"3063:4:2","nodeType":"YulIdentifier","src":"3063:4:2"}]}]},"name":"abi_encode_tuple_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"2790:419:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2941:9:2","nodeType":"YulTypedName","src":"2941:9:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2956:4:2","nodeType":"YulTypedName","src":"2956:4:2","type":""}],"src":"2790:419:2"},{"body":{"nativeSrc":"3341:206:2","nodeType":"YulBlock","src":"3341:206:2","statements":[{"nativeSrc":"3351:26:2","nodeType":"YulAssignment","src":"3351:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"3363:9:2","nodeType":"YulIdentifier","src":"3363:9:2"},{"kind":"number","nativeSrc":"3374:2:2","nodeType":"YulLiteral","src":"3374:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3359:3:2","nodeType":"YulIdentifier","src":"3359:3:2"},"nativeSrc":"3359:18:2","nodeType":"YulFunctionCall","src":"3359:18:2"},"variableNames":[{"name":"tail","nativeSrc":"3351:4:2","nodeType":"YulIdentifier","src":"3351:4:2"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"3431:6:2","nodeType":"YulIdentifier","src":"3431:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"3444:9:2","nodeType":"YulIdentifier","src":"3444:9:2"},{"kind":"number","nativeSrc":"3455:1:2","nodeType":"YulLiteral","src":"3455:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3440:3:2","nodeType":"YulIdentifier","src":"3440:3:2"},"nativeSrc":"3440:17:2","nodeType":"YulFunctionCall","src":"3440:17:2"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"3387:43:2","nodeType":"YulIdentifier","src":"3387:43:2"},"nativeSrc":"3387:71:2","nodeType":"YulFunctionCall","src":"3387:71:2"},"nativeSrc":"3387:71:2","nodeType":"YulExpressionStatement","src":"3387:71:2"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"3512:6:2","nodeType":"YulIdentifier","src":"3512:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"3525:9:2","nodeType":"YulIdentifier","src":"3525:9:2"},{"kind":"number","nativeSrc":"3536:2:2","nodeType":"YulLiteral","src":"3536:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3521:3:2","nodeType":"YulIdentifier","src":"3521:3:2"},"nativeSrc":"3521:18:2","nodeType":"YulFunctionCall","src":"3521:18:2"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"3468:43:2","nodeType":"YulIdentifier","src":"3468:43:2"},"nativeSrc":"3468:72:2","nodeType":"YulFunctionCall","src":"3468:72:2"},"nativeSrc":"3468:72:2","nodeType":"YulExpressionStatement","src":"3468:72:2"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"3215:332:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3305:9:2","nodeType":"YulTypedName","src":"3305:9:2","type":""},{"name":"value1","nativeSrc":"3317:6:2","nodeType":"YulTypedName","src":"3317:6:2","type":""},{"name":"value0","nativeSrc":"3325:6:2","nodeType":"YulTypedName","src":"3325:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3336:4:2","nodeType":"YulTypedName","src":"3336:4:2","type":""}],"src":"3215:332:2"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_payable_to_t_address_payable_fromStack(value, pos) {\n mstore(pos, cleanup_t_address_payable(value))\n }\n\n function abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_payable_to_t_address_payable_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8(memPtr) {\n\n mstore(add(memPtr, 0), \"You can't withdraw yet\")\n\n }\n\n function abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a(memPtr) {\n\n mstore(add(memPtr, 0), \"You aren't the owner\")\n\n }\n\n function abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n}\n","id":2,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100645780638da5cb5b1461006e575b600080fd5b61004e61008c565b60405161005b919061024a565b60405180910390f35b61006c610092565b005b61007661020b565b60405161008391906102a6565b60405180910390f35b60005481565b6000544210156100d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ce9061031e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015e9061038a565b60405180910390fd5b7fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b9347426040516101989291906103aa565b60405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610208573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000819050919050565b61024481610231565b82525050565b600060208201905061025f600083018461023b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061029082610265565b9050919050565b6102a081610285565b82525050565b60006020820190506102bb6000830184610297565b92915050565b600082825260208201905092915050565b7f596f752063616e27742077697468647261772079657400000000000000000000600082015250565b60006103086016836102c1565b9150610313826102d2565b602082019050919050565b60006020820190508181036000830152610337816102fb565b9050919050565b7f596f75206172656e277420746865206f776e6572000000000000000000000000600082015250565b60006103746014836102c1565b915061037f8261033e565b602082019050919050565b600060208201905081810360008301526103a381610367565b9050919050565b60006040820190506103bf600083018561023b565b6103cc602083018461023b565b939250505056fea26469706673582212202d2006ef26cbefcc4deab66c32f5ff5efb638f080c7490b6633879942caf232764736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x251C1AA3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x24A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x92 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x76 PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x83 SWAP2 SWAP1 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCE SWAP1 PUSH2 0x31E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x167 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15E SWAP1 PUSH2 0x38A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xBF2ED60BD5B5965D685680C01195C9514E4382E28E3A5A2D2D5244BF59411B93 SELFBALANCE TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x198 SWAP3 SWAP2 SWAP1 PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x244 DUP2 PUSH2 0x231 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x23B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x290 DUP3 PUSH2 0x265 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A0 DUP2 PUSH2 0x285 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2BB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x297 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x596F752063616E27742077697468647261772079657400000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x308 PUSH1 0x16 DUP4 PUSH2 0x2C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x313 DUP3 PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x337 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x596F75206172656E277420746865206F776E6572000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374 PUSH1 0x14 DUP4 PUSH2 0x2C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x37F DUP3 PUSH2 0x33E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A3 DUP2 PUSH2 0x367 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3BF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x23B JUMP JUMPDEST PUSH2 0x3CC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x23B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D KECCAK256 MOD 0xEF 0x26 0xCB 0xEF 0xCC 0x4D 0xEA 0xB6 PUSH13 0x32F5FF5EFB638F080C7490B663 CODESIZE PUSH26 0x942CAF232764736F6C634300081C003300000000000000000000 ","sourceMap":"141:866:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;161:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;515:490;;;:::i;:::-;;189:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;161:22;;;;:::o;515:490::-;785:10;;766:15;:29;;758:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;854:5;;;;;;;;;;;840:19;;:10;:19;;;832:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;900:50;911:21;934:15;900:50;;;;;;;:::i;:::-;;;;;;;;961:5;;;;;;;;;;;:14;;:37;976:21;961:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;515:490::o;189:28::-;;;;;;;;;;;;;:::o;7:77:2:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:104::-;619:7;648:24;666:5;648:24;:::i;:::-;637:35;;574:104;;;:::o;684:142::-;787:32;813:5;787:32;:::i;:::-;782:3;775:45;684:142;;:::o;832:254::-;941:4;979:2;968:9;964:18;956:26;;992:87;1076:1;1065:9;1061:17;1052:6;992:87;:::i;:::-;832:254;;;;:::o;1092:169::-;1176:11;1210:6;1205:3;1198:19;1250:4;1245:3;1241:14;1226:29;;1092:169;;;;:::o;1267:172::-;1407:24;1403:1;1395:6;1391:14;1384:48;1267:172;:::o;1445:366::-;1587:3;1608:67;1672:2;1667:3;1608:67;:::i;:::-;1601:74;;1684:93;1773:3;1684:93;:::i;:::-;1802:2;1797:3;1793:12;1786:19;;1445:366;;;:::o;1817:419::-;1983:4;2021:2;2010:9;2006:18;1998:26;;2070:9;2064:4;2060:20;2056:1;2045:9;2041:17;2034:47;2098:131;2224:4;2098:131;:::i;:::-;2090:139;;1817:419;;;:::o;2242:170::-;2382:22;2378:1;2370:6;2366:14;2359:46;2242:170;:::o;2418:366::-;2560:3;2581:67;2645:2;2640:3;2581:67;:::i;:::-;2574:74;;2657:93;2746:3;2657:93;:::i;:::-;2775:2;2770:3;2766:12;2759:19;;2418:366;;;:::o;2790:419::-;2956:4;2994:2;2983:9;2979:18;2971:26;;3043:9;3037:4;3033:20;3029:1;3018:9;3014:17;3007:47;3071:131;3197:4;3071:131;:::i;:::-;3063:139;;2790:419;;;:::o;3215:332::-;3336:4;3374:2;3363:9;3359:18;3351:26;;3387:71;3455:1;3444:9;3440:17;3431:6;3387:71;:::i;:::-;3468:72;3536:2;3525:9;3521:18;3512:6;3468:72;:::i;:::-;3215:332;;;;;:::o"},"methodIdentifiers":{"owner()":"8da5cb5b","unlockTime()":"251c1aa3","withdraw()":"3ccfd60b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_unlockTime\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"when\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Lock.sol\":\"Lock\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Lock.sol\":{\"keccak256\":\"0x3c36b5a83d533c3f095ac358675e9356c1761cd7f1e955ae23200203060419a9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://864fae3ab9a941599f30667d484d94a34a0779f6e606110d2acdcf51c56c47e4\",\"dweb:/ipfs/QmXYat9EQBuwXsp4EcczzGTfML2ugVaYqiviiGoiZ9cgXr\"]}},\"version\":1}"}},"contracts/testament.sol":{"Testament":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"testamentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"heir","type":"address"}],"name":"InheritanceClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"testamentId","type":"uint256"}],"name":"TestamentActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"testamentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"lawyer","type":"address"}],"name":"TestamentCreated","type":"event"},{"inputs":[{"internalType":"uint256","name":"_testamentId","type":"uint256"}],"name":"activateTestament","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_testamentId","type":"uint256"},{"internalType":"address","name":"_heir","type":"address"},{"internalType":"uint256","name":"_percentage","type":"uint256"},{"internalType":"string","name":"_documentHash","type":"string"}],"name":"addHeir","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_testamentId","type":"uint256"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"claimInheritance","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lawyer","type":"address"}],"name":"createTestament","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testamentCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"testaments","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"lawyer","type":"address"},{"internalType":"bool","name":"isActive","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_127":{"entryPoint":null,"id":127,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b506112a88061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80638508e152146100675780639b6fc2e2146100975780639ccef960146100b3578063af21e42a146100cf578063d1d3a04c14610100578063d5df76a31461011e575b600080fd5b610081600480360381019061007c9190610881565b610150565b60405161008e91906108c7565b60405180910390f35b6100b160048036038101906100ac919061090e565b61026c565b005b6100cd60048036038101906100c89190610a81565b61036d565b005b6100e960048036038101906100e49190610b64565b6104ee565b6040516100f7929190610c43565b60405180910390f35b610108610792565b60405161011591906108c7565b60405180910390f35b6101386004803603810190610133919061090e565b610798565b60405161014793929190610c9d565b60405180910390f35b60006001600081548092919061016590610d03565b9190505550600080600060015481526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160010160146101000a81548160ff0219169083151502179055506001547f9c6a0135230f01de660fe231c80c4d2e0d8d9ee407b4d0d628823617469b55833385604051610259929190610d4b565b60405180910390a2600154915050919050565b60008082815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030690610de6565b60405180910390fd5b600160008083815260200190815260200160002060010160146101000a81548160ff021916908315150217905550807f738789d97160bfe471f3c5d5da0280bb24b2ee025a7b5d68d05831f758c4602060405160405180910390a250565b60008085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040790610e52565b60405180910390fd5b60008085815260200190815260200160002060020160405180606001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020190816104e5919061107e565b50505050505050565b6000606060008086815260200190815260200160002060010160149054906101000a900460ff16610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b9061119c565b60405180910390fd5b60005b6000808781526020019081526020016000206002018054905081101561074e573373ffffffffffffffffffffffffffffffffffffffff1660008088815260200190815260200160002060020182815481106105b5576105b46111bc565b5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361074157857f2edeba758f9de0f2e37457a533bc3cea5345b89fe919eb96dce18ba028b7d63e3360405161063291906111eb565b60405180910390a26000808781526020019081526020016000206002018181548110610661576106606111bc565b5b906000526020600020906003020160010154600080888152602001908152602001600020600201828154811061069a576106996111bc565b5b90600052602060002090600302016002018080546106b790610ea1565b80601f01602080910402602001604051908101604052809291908181526020018280546106e390610ea1565b80156107305780601f1061070557610100808354040283529160200191610730565b820191906000526020600020905b81548152906001019060200180831161071357829003601f168201915b50505050509050925092505061078a565b8080600101915050610557565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190611252565b60405180910390fd5b935093915050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900460ff16905083565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061084e82610823565b9050919050565b61085e81610843565b811461086957600080fd5b50565b60008135905061087b81610855565b92915050565b60006020828403121561089757610896610819565b5b60006108a58482850161086c565b91505092915050565b6000819050919050565b6108c1816108ae565b82525050565b60006020820190506108dc60008301846108b8565b92915050565b6108eb816108ae565b81146108f657600080fd5b50565b600081359050610908816108e2565b92915050565b60006020828403121561092457610923610819565b5b6000610932848285016108f9565b91505092915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61098e82610945565b810181811067ffffffffffffffff821117156109ad576109ac610956565b5b80604052505050565b60006109c061080f565b90506109cc8282610985565b919050565b600067ffffffffffffffff8211156109ec576109eb610956565b5b6109f582610945565b9050602081019050919050565b82818337600083830152505050565b6000610a24610a1f846109d1565b6109b6565b905082815260208101848484011115610a4057610a3f610940565b5b610a4b848285610a02565b509392505050565b600082601f830112610a6857610a6761093b565b5b8135610a78848260208601610a11565b91505092915050565b60008060008060808587031215610a9b57610a9a610819565b5b6000610aa9878288016108f9565b9450506020610aba8782880161086c565b9350506040610acb878288016108f9565b925050606085013567ffffffffffffffff811115610aec57610aeb61081e565b5b610af887828801610a53565b91505092959194509250565b600080fd5b600080fd5b60008083601f840112610b2457610b2361093b565b5b8235905067ffffffffffffffff811115610b4157610b40610b04565b5b602083019150836001820283011115610b5d57610b5c610b09565b5b9250929050565b600080600060408486031215610b7d57610b7c610819565b5b6000610b8b868287016108f9565b935050602084013567ffffffffffffffff811115610bac57610bab61081e565b5b610bb886828701610b0e565b92509250509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015610bfe578082015181840152602081019050610be3565b60008484015250505050565b6000610c1582610bc4565b610c1f8185610bcf565b9350610c2f818560208601610be0565b610c3881610945565b840191505092915050565b6000604082019050610c5860008301856108b8565b8181036020830152610c6a8184610c0a565b90509392505050565b610c7c81610843565b82525050565b60008115159050919050565b610c9781610c82565b82525050565b6000606082019050610cb26000830186610c73565b610cbf6020830185610c73565b610ccc6040830184610c8e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d0e826108ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610d4057610d3f610cd4565b5b600182019050919050565b6000604082019050610d606000830185610c73565b610d6d6020830184610c73565b9392505050565b7f4f6e6c792061737369676e6564206c61777965722063616e206163746976617460008201527f65207468652074657374616d656e740000000000000000000000000000000000602082015250565b6000610dd0602f83610bcf565b9150610ddb82610d74565b604082019050919050565b60006020820190508181036000830152610dff81610dc3565b9050919050565b7f4f6e6c79206f776e65722063616e206164642068656972730000000000000000600082015250565b6000610e3c601883610bcf565b9150610e4782610e06565b602082019050919050565b60006020820190508181036000830152610e6b81610e2f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610eb957607f821691505b602082108103610ecc57610ecb610e72565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610ef7565b610f3e8683610ef7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000610f7b610f76610f71846108ae565b610f56565b6108ae565b9050919050565b6000819050919050565b610f9583610f60565b610fa9610fa182610f82565b848454610f04565b825550505050565b600090565b610fbe610fb1565b610fc9818484610f8c565b505050565b5b81811015610fed57610fe2600082610fb6565b600181019050610fcf565b5050565b601f8211156110325761100381610ed2565b61100c84610ee7565b8101602085101561101b578190505b61102f61102785610ee7565b830182610fce565b50505b505050565b600082821c905092915050565b600061105560001984600802611037565b1980831691505092915050565b600061106e8383611044565b9150826002028217905092915050565b61108782610bc4565b67ffffffffffffffff8111156110a05761109f610956565b5b6110aa8254610ea1565b6110b5828285610ff1565b600060209050601f8311600181146110e857600084156110d6578287015190505b6110e08582611062565b865550611148565b601f1984166110f686610ed2565b60005b8281101561111e578489015182556001820191506020850194506020810190506110f9565b8683101561113b5784890151611137601f891682611044565b8355505b6001600288020188555050505b505050505050565b7f54657374616d656e74206973206e6f7420616374697665000000000000000000600082015250565b6000611186601783610bcf565b915061119182611150565b602082019050919050565b600060208201905081810360008301526111b581611179565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506112006000830184610c73565b92915050565b7f596f7520617265206e6f74206c697374656420617320616e2068656972000000600082015250565b600061123c601d83610bcf565b915061124782611206565b602082019050919050565b6000602082019050818103600083015261126b8161122f565b905091905056fea2646970667358221220742b74c6f0810922b13374aed19e65c2974b4d9dadb72edaa1230b9d4d63fca064736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12A8 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8508E152 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x9B6FC2E2 EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x9CCEF960 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAF21E42A EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0xD1D3A04C EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0xD5DF76A3 EQ PUSH2 0x11E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x81 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x881 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8E SWAP2 SWAP1 PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x90E JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xA81 JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB64 JUMP JUMPDEST PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP3 SWAP2 SWAP1 PUSH2 0xC43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x792 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x90E JUMP JUMPDEST PUSH2 0x798 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x147 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x165 SWAP1 PUSH2 0xD03 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP CALLER DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP3 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 SLOAD PUSH32 0x9C6A0135230F01DE660FE231C80C4D2E0D8D9EE407B4D0D628823617469B5583 CALLER DUP6 PUSH1 0x40 MLOAD PUSH2 0x259 SWAP3 SWAP2 SWAP1 PUSH2 0xD4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x30F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x306 SWAP1 PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH32 0x738789D97160BFE471F3C5D5DA0280BB24B2EE025A7B5D68D05831F758C46020 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x410 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x407 SWAP1 PUSH2 0xE52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP2 PUSH2 0x4E5 SWAP2 SWAP1 PUSH2 0x107E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x554 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x54B SWAP1 PUSH2 0x119C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x74E JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5B5 JUMPI PUSH2 0x5B4 PUSH2 0x11BC JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x741 JUMPI DUP6 PUSH32 0x2EDEBA758F9DE0F2E37457A533BC3CEA5345B89FE919EB96DCE18BA028B7D63E CALLER PUSH1 0x40 MLOAD PUSH2 0x632 SWAP2 SWAP1 PUSH2 0x11EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x661 JUMPI PUSH2 0x660 PUSH2 0x11BC JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD PUSH1 0x0 DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x69A JUMPI PUSH2 0x699 PUSH2 0x11BC JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP1 DUP1 SLOAD PUSH2 0x6B7 SWAP1 PUSH2 0xEA1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6E3 SWAP1 PUSH2 0xEA1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x730 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x705 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x730 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x713 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 POP SWAP3 POP POP PUSH2 0x78A JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x557 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x781 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP DUP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84E DUP3 PUSH2 0x823 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x85E DUP2 PUSH2 0x843 JUMP JUMPDEST DUP2 EQ PUSH2 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x87B DUP2 PUSH2 0x855 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH2 0x896 PUSH2 0x819 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8A5 DUP5 DUP3 DUP6 ADD PUSH2 0x86C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8C1 DUP2 PUSH2 0x8AE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8DC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x8B8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x8EB DUP2 PUSH2 0x8AE JUMP JUMPDEST DUP2 EQ PUSH2 0x8F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x908 DUP2 PUSH2 0x8E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x924 JUMPI PUSH2 0x923 PUSH2 0x819 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x932 DUP5 DUP3 DUP6 ADD PUSH2 0x8F9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x98E DUP3 PUSH2 0x945 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x9AD JUMPI PUSH2 0x9AC PUSH2 0x956 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C0 PUSH2 0x80F JUMP JUMPDEST SWAP1 POP PUSH2 0x9CC DUP3 DUP3 PUSH2 0x985 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x9EC JUMPI PUSH2 0x9EB PUSH2 0x956 JUMP JUMPDEST JUMPDEST PUSH2 0x9F5 DUP3 PUSH2 0x945 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA24 PUSH2 0xA1F DUP5 PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0x9B6 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0xA40 JUMPI PUSH2 0xA3F PUSH2 0x940 JUMP JUMPDEST JUMPDEST PUSH2 0xA4B DUP5 DUP3 DUP6 PUSH2 0xA02 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA68 JUMPI PUSH2 0xA67 PUSH2 0x93B JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA78 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0xA11 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA9B JUMPI PUSH2 0xA9A PUSH2 0x819 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAA9 DUP8 DUP3 DUP9 ADD PUSH2 0x8F9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xABA DUP8 DUP3 DUP9 ADD PUSH2 0x86C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xACB DUP8 DUP3 DUP9 ADD PUSH2 0x8F9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEC JUMPI PUSH2 0xAEB PUSH2 0x81E JUMP JUMPDEST JUMPDEST PUSH2 0xAF8 DUP8 DUP3 DUP9 ADD PUSH2 0xA53 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xB24 JUMPI PUSH2 0xB23 PUSH2 0x93B JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB41 JUMPI PUSH2 0xB40 PUSH2 0xB04 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xB5D JUMPI PUSH2 0xB5C PUSH2 0xB09 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xB7D JUMPI PUSH2 0xB7C PUSH2 0x819 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB8B DUP7 DUP3 DUP8 ADD PUSH2 0x8F9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAB PUSH2 0x81E JUMP JUMPDEST JUMPDEST PUSH2 0xBB8 DUP7 DUP3 DUP8 ADD PUSH2 0xB0E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBFE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xBE3 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC15 DUP3 PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0xC1F DUP2 DUP6 PUSH2 0xBCF JUMP JUMPDEST SWAP4 POP PUSH2 0xC2F DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBE0 JUMP JUMPDEST PUSH2 0xC38 DUP2 PUSH2 0x945 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xC58 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x8B8 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xC6A DUP2 DUP5 PUSH2 0xC0A JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC7C DUP2 PUSH2 0x843 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC97 DUP2 PUSH2 0xC82 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xCB2 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xCBF PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xCCC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xC8E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD0E DUP3 PUSH2 0x8AE JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xD40 JUMPI PUSH2 0xD3F PUSH2 0xCD4 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xD60 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xD6D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F6E6C792061737369676E6564206C61777965722063616E2061637469766174 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x65207468652074657374616D656E740000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD0 PUSH1 0x2F DUP4 PUSH2 0xBCF JUMP JUMPDEST SWAP2 POP PUSH2 0xDDB DUP3 PUSH2 0xD74 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xDFF DUP2 PUSH2 0xDC3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F6E6C79206F776E65722063616E206164642068656972730000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE3C PUSH1 0x18 DUP4 PUSH2 0xBCF JUMP JUMPDEST SWAP2 POP PUSH2 0xE47 DUP3 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE6B DUP2 PUSH2 0xE2F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEB9 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xECC JUMPI PUSH2 0xECB PUSH2 0xE72 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF34 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xEF7 JUMP JUMPDEST PUSH2 0xF3E DUP7 DUP4 PUSH2 0xEF7 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7B PUSH2 0xF76 PUSH2 0xF71 DUP5 PUSH2 0x8AE JUMP JUMPDEST PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x8AE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF95 DUP4 PUSH2 0xF60 JUMP JUMPDEST PUSH2 0xFA9 PUSH2 0xFA1 DUP3 PUSH2 0xF82 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xF04 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFBE PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFC9 DUP2 DUP5 DUP5 PUSH2 0xF8C JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFE2 PUSH1 0x0 DUP3 PUSH2 0xFB6 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xFCF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1032 JUMPI PUSH2 0x1003 DUP2 PUSH2 0xED2 JUMP JUMPDEST PUSH2 0x100C DUP5 PUSH2 0xEE7 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x101B JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x102F PUSH2 0x1027 DUP6 PUSH2 0xEE7 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0xFCE JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1055 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1037 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x106E DUP4 DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1087 DUP3 PUSH2 0xBC4 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10A0 JUMPI PUSH2 0x109F PUSH2 0x956 JUMP JUMPDEST JUMPDEST PUSH2 0x10AA DUP3 SLOAD PUSH2 0xEA1 JUMP JUMPDEST PUSH2 0x10B5 DUP3 DUP3 DUP6 PUSH2 0xFF1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x10E8 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x10D6 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x10E0 DUP6 DUP3 PUSH2 0x1062 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x1148 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x10F6 DUP7 PUSH2 0xED2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x111E JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10F9 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x113B JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x1137 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x1044 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x54657374616D656E74206973206E6F7420616374697665000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1186 PUSH1 0x17 DUP4 PUSH2 0xBCF JUMP JUMPDEST SWAP2 POP PUSH2 0x1191 DUP3 PUSH2 0x1150 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11B5 DUP2 PUSH2 0x1179 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1200 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x596F7520617265206E6F74206C697374656420617320616E2068656972000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123C PUSH1 0x1D DUP4 PUSH2 0xBCF JUMP JUMPDEST SWAP2 POP PUSH2 0x1247 DUP3 PUSH2 0x1206 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x126B DUP2 PUSH2 0x122F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH21 0x2B74C6F0810922B13374AED19E65C2974B4D9DADB7 0x2E 0xDA LOG1 0x23 SIGNEXTEND SWAP14 0x4D PUSH4 0xFCA06473 PUSH16 0x6C634300081C00330000000000000000 ","sourceMap":"61:2342:1:-:0;;;692:16;;;;;;;;;;61:2342;;;;;;"},"deployedBytecode":{"functionDebugData":{"@activateTestament_236":{"entryPoint":620,"id":236,"parameterSlots":1,"returnSlots":0},"@addHeir_208":{"entryPoint":877,"id":208,"parameterSlots":4,"returnSlots":0},"@claimInheritance_310":{"entryPoint":1262,"id":310,"parameterSlots":3,"returnSlots":2},"@createTestament_173":{"entryPoint":336,"id":173,"parameterSlots":1,"returnSlots":1},"@testamentCount_105":{"entryPoint":1938,"id":105,"parameterSlots":0,"returnSlots":0},"@testaments_103":{"entryPoint":1944,"id":103,"parameterSlots":0,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr":{"entryPoint":2577,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2156,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":2830,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_string_memory_ptr":{"entryPoint":2643,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":2297,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2177,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":2318,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_addresst_uint256t_string_memory_ptr":{"entryPoint":2689,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint256t_bytes_calldata_ptr":{"entryPoint":2916,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":3187,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":3214,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":3082,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625_to_t_string_memory_ptr_fromStack":{"entryPoint":4655,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5_to_t_string_memory_ptr_fromStack":{"entryPoint":4473,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8_to_t_string_memory_ptr_fromStack":{"entryPoint":3523,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c_to_t_string_memory_ptr_fromStack":{"entryPoint":3631,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":2232,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":4587,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":3403,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed":{"entryPoint":3229,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4690,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4508,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3558,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3666,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":2247,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3139,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":2486,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":2063,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":2513,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_string_storage":{"entryPoint":3794,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":3012,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":3023,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_string_storage":{"entryPoint":4081,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":2115,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":3202,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2083,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":2222,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":4046,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_uint256_to_t_uint256":{"entryPoint":3936,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":4222,"id":null,"parameterSlots":2,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":2562,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":3040,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":3815,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":3745,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":4194,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":2437,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":3926,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":3331,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":4164,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":3284,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":3698,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4540,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2390,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":3970,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":2820,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2363,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2825,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":2368,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":2078,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2073,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2373,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":3831,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":4151,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":4022,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625":{"entryPoint":4614,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5":{"entryPoint":4432,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8":{"entryPoint":3444,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c":{"entryPoint":3590,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":3844,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":3980,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2133,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":2274,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":4017,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:19002:2","nodeType":"YulBlock","src":"0:19002:2","statements":[{"body":{"nativeSrc":"47:35:2","nodeType":"YulBlock","src":"47:35:2","statements":[{"nativeSrc":"57:19:2","nodeType":"YulAssignment","src":"57:19:2","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:2","nodeType":"YulLiteral","src":"73:2:2","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:2","nodeType":"YulIdentifier","src":"67:5:2"},"nativeSrc":"67:9:2","nodeType":"YulFunctionCall","src":"67:9:2"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:2","nodeType":"YulIdentifier","src":"57:6:2"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:2","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:2","nodeType":"YulTypedName","src":"40:6:2","type":""}],"src":"7:75:2"},{"body":{"nativeSrc":"177:28:2","nodeType":"YulBlock","src":"177:28:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:2","nodeType":"YulLiteral","src":"194:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:2","nodeType":"YulLiteral","src":"197:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:2","nodeType":"YulIdentifier","src":"187:6:2"},"nativeSrc":"187:12:2","nodeType":"YulFunctionCall","src":"187:12:2"},"nativeSrc":"187:12:2","nodeType":"YulExpressionStatement","src":"187:12:2"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:2","nodeType":"YulFunctionDefinition","src":"88:117:2"},{"body":{"nativeSrc":"300:28:2","nodeType":"YulBlock","src":"300:28:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:2","nodeType":"YulLiteral","src":"317:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:2","nodeType":"YulLiteral","src":"320:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:2","nodeType":"YulIdentifier","src":"310:6:2"},"nativeSrc":"310:12:2","nodeType":"YulFunctionCall","src":"310:12:2"},"nativeSrc":"310:12:2","nodeType":"YulExpressionStatement","src":"310:12:2"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:2","nodeType":"YulFunctionDefinition","src":"211:117:2"},{"body":{"nativeSrc":"379:81:2","nodeType":"YulBlock","src":"379:81:2","statements":[{"nativeSrc":"389:65:2","nodeType":"YulAssignment","src":"389:65:2","value":{"arguments":[{"name":"value","nativeSrc":"404:5:2","nodeType":"YulIdentifier","src":"404:5:2"},{"kind":"number","nativeSrc":"411:42:2","nodeType":"YulLiteral","src":"411:42:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:2","nodeType":"YulIdentifier","src":"400:3:2"},"nativeSrc":"400:54:2","nodeType":"YulFunctionCall","src":"400:54:2"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:2","nodeType":"YulIdentifier","src":"389:7:2"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:2","nodeType":"YulTypedName","src":"361:5:2","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:2","nodeType":"YulTypedName","src":"371:7:2","type":""}],"src":"334:126:2"},{"body":{"nativeSrc":"511:51:2","nodeType":"YulBlock","src":"511:51:2","statements":[{"nativeSrc":"521:35:2","nodeType":"YulAssignment","src":"521:35:2","value":{"arguments":[{"name":"value","nativeSrc":"550:5:2","nodeType":"YulIdentifier","src":"550:5:2"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:2","nodeType":"YulIdentifier","src":"532:17:2"},"nativeSrc":"532:24:2","nodeType":"YulFunctionCall","src":"532:24:2"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:2","nodeType":"YulIdentifier","src":"521:7:2"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:2","nodeType":"YulTypedName","src":"493:5:2","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:2","nodeType":"YulTypedName","src":"503:7:2","type":""}],"src":"466:96:2"},{"body":{"nativeSrc":"611:79:2","nodeType":"YulBlock","src":"611:79:2","statements":[{"body":{"nativeSrc":"668:16:2","nodeType":"YulBlock","src":"668:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"677:1:2","nodeType":"YulLiteral","src":"677:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"680:1:2","nodeType":"YulLiteral","src":"680:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"670:6:2","nodeType":"YulIdentifier","src":"670:6:2"},"nativeSrc":"670:12:2","nodeType":"YulFunctionCall","src":"670:12:2"},"nativeSrc":"670:12:2","nodeType":"YulExpressionStatement","src":"670:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"634:5:2","nodeType":"YulIdentifier","src":"634:5:2"},{"arguments":[{"name":"value","nativeSrc":"659:5:2","nodeType":"YulIdentifier","src":"659:5:2"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"641:17:2","nodeType":"YulIdentifier","src":"641:17:2"},"nativeSrc":"641:24:2","nodeType":"YulFunctionCall","src":"641:24:2"}],"functionName":{"name":"eq","nativeSrc":"631:2:2","nodeType":"YulIdentifier","src":"631:2:2"},"nativeSrc":"631:35:2","nodeType":"YulFunctionCall","src":"631:35:2"}],"functionName":{"name":"iszero","nativeSrc":"624:6:2","nodeType":"YulIdentifier","src":"624:6:2"},"nativeSrc":"624:43:2","nodeType":"YulFunctionCall","src":"624:43:2"},"nativeSrc":"621:63:2","nodeType":"YulIf","src":"621:63:2"}]},"name":"validator_revert_t_address","nativeSrc":"568:122:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"604:5:2","nodeType":"YulTypedName","src":"604:5:2","type":""}],"src":"568:122:2"},{"body":{"nativeSrc":"748:87:2","nodeType":"YulBlock","src":"748:87:2","statements":[{"nativeSrc":"758:29:2","nodeType":"YulAssignment","src":"758:29:2","value":{"arguments":[{"name":"offset","nativeSrc":"780:6:2","nodeType":"YulIdentifier","src":"780:6:2"}],"functionName":{"name":"calldataload","nativeSrc":"767:12:2","nodeType":"YulIdentifier","src":"767:12:2"},"nativeSrc":"767:20:2","nodeType":"YulFunctionCall","src":"767:20:2"},"variableNames":[{"name":"value","nativeSrc":"758:5:2","nodeType":"YulIdentifier","src":"758:5:2"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"823:5:2","nodeType":"YulIdentifier","src":"823:5:2"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"796:26:2","nodeType":"YulIdentifier","src":"796:26:2"},"nativeSrc":"796:33:2","nodeType":"YulFunctionCall","src":"796:33:2"},"nativeSrc":"796:33:2","nodeType":"YulExpressionStatement","src":"796:33:2"}]},"name":"abi_decode_t_address","nativeSrc":"696:139:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"726:6:2","nodeType":"YulTypedName","src":"726:6:2","type":""},{"name":"end","nativeSrc":"734:3:2","nodeType":"YulTypedName","src":"734:3:2","type":""}],"returnVariables":[{"name":"value","nativeSrc":"742:5:2","nodeType":"YulTypedName","src":"742:5:2","type":""}],"src":"696:139:2"},{"body":{"nativeSrc":"907:263:2","nodeType":"YulBlock","src":"907:263:2","statements":[{"body":{"nativeSrc":"953:83:2","nodeType":"YulBlock","src":"953:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"955:77:2","nodeType":"YulIdentifier","src":"955:77:2"},"nativeSrc":"955:79:2","nodeType":"YulFunctionCall","src":"955:79:2"},"nativeSrc":"955:79:2","nodeType":"YulExpressionStatement","src":"955:79:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"928:7:2","nodeType":"YulIdentifier","src":"928:7:2"},{"name":"headStart","nativeSrc":"937:9:2","nodeType":"YulIdentifier","src":"937:9:2"}],"functionName":{"name":"sub","nativeSrc":"924:3:2","nodeType":"YulIdentifier","src":"924:3:2"},"nativeSrc":"924:23:2","nodeType":"YulFunctionCall","src":"924:23:2"},{"kind":"number","nativeSrc":"949:2:2","nodeType":"YulLiteral","src":"949:2:2","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"920:3:2","nodeType":"YulIdentifier","src":"920:3:2"},"nativeSrc":"920:32:2","nodeType":"YulFunctionCall","src":"920:32:2"},"nativeSrc":"917:119:2","nodeType":"YulIf","src":"917:119:2"},{"nativeSrc":"1046:117:2","nodeType":"YulBlock","src":"1046:117:2","statements":[{"nativeSrc":"1061:15:2","nodeType":"YulVariableDeclaration","src":"1061:15:2","value":{"kind":"number","nativeSrc":"1075:1:2","nodeType":"YulLiteral","src":"1075:1:2","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"1065:6:2","nodeType":"YulTypedName","src":"1065:6:2","type":""}]},{"nativeSrc":"1090:63:2","nodeType":"YulAssignment","src":"1090:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1125:9:2","nodeType":"YulIdentifier","src":"1125:9:2"},{"name":"offset","nativeSrc":"1136:6:2","nodeType":"YulIdentifier","src":"1136:6:2"}],"functionName":{"name":"add","nativeSrc":"1121:3:2","nodeType":"YulIdentifier","src":"1121:3:2"},"nativeSrc":"1121:22:2","nodeType":"YulFunctionCall","src":"1121:22:2"},{"name":"dataEnd","nativeSrc":"1145:7:2","nodeType":"YulIdentifier","src":"1145:7:2"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"1100:20:2","nodeType":"YulIdentifier","src":"1100:20:2"},"nativeSrc":"1100:53:2","nodeType":"YulFunctionCall","src":"1100:53:2"},"variableNames":[{"name":"value0","nativeSrc":"1090:6:2","nodeType":"YulIdentifier","src":"1090:6:2"}]}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"841:329:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"877:9:2","nodeType":"YulTypedName","src":"877:9:2","type":""},{"name":"dataEnd","nativeSrc":"888:7:2","nodeType":"YulTypedName","src":"888:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"900:6:2","nodeType":"YulTypedName","src":"900:6:2","type":""}],"src":"841:329:2"},{"body":{"nativeSrc":"1221:32:2","nodeType":"YulBlock","src":"1221:32:2","statements":[{"nativeSrc":"1231:16:2","nodeType":"YulAssignment","src":"1231:16:2","value":{"name":"value","nativeSrc":"1242:5:2","nodeType":"YulIdentifier","src":"1242:5:2"},"variableNames":[{"name":"cleaned","nativeSrc":"1231:7:2","nodeType":"YulIdentifier","src":"1231:7:2"}]}]},"name":"cleanup_t_uint256","nativeSrc":"1176:77:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1203:5:2","nodeType":"YulTypedName","src":"1203:5:2","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1213:7:2","nodeType":"YulTypedName","src":"1213:7:2","type":""}],"src":"1176:77:2"},{"body":{"nativeSrc":"1324:53:2","nodeType":"YulBlock","src":"1324:53:2","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"1341:3:2","nodeType":"YulIdentifier","src":"1341:3:2"},{"arguments":[{"name":"value","nativeSrc":"1364:5:2","nodeType":"YulIdentifier","src":"1364:5:2"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"1346:17:2","nodeType":"YulIdentifier","src":"1346:17:2"},"nativeSrc":"1346:24:2","nodeType":"YulFunctionCall","src":"1346:24:2"}],"functionName":{"name":"mstore","nativeSrc":"1334:6:2","nodeType":"YulIdentifier","src":"1334:6:2"},"nativeSrc":"1334:37:2","nodeType":"YulFunctionCall","src":"1334:37:2"},"nativeSrc":"1334:37:2","nodeType":"YulExpressionStatement","src":"1334:37:2"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"1259:118:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1312:5:2","nodeType":"YulTypedName","src":"1312:5:2","type":""},{"name":"pos","nativeSrc":"1319:3:2","nodeType":"YulTypedName","src":"1319:3:2","type":""}],"src":"1259:118:2"},{"body":{"nativeSrc":"1481:124:2","nodeType":"YulBlock","src":"1481:124:2","statements":[{"nativeSrc":"1491:26:2","nodeType":"YulAssignment","src":"1491:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"1503:9:2","nodeType":"YulIdentifier","src":"1503:9:2"},{"kind":"number","nativeSrc":"1514:2:2","nodeType":"YulLiteral","src":"1514:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1499:3:2","nodeType":"YulIdentifier","src":"1499:3:2"},"nativeSrc":"1499:18:2","nodeType":"YulFunctionCall","src":"1499:18:2"},"variableNames":[{"name":"tail","nativeSrc":"1491:4:2","nodeType":"YulIdentifier","src":"1491:4:2"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"1571:6:2","nodeType":"YulIdentifier","src":"1571:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"1584:9:2","nodeType":"YulIdentifier","src":"1584:9:2"},{"kind":"number","nativeSrc":"1595:1:2","nodeType":"YulLiteral","src":"1595:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1580:3:2","nodeType":"YulIdentifier","src":"1580:3:2"},"nativeSrc":"1580:17:2","nodeType":"YulFunctionCall","src":"1580:17:2"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"1527:43:2","nodeType":"YulIdentifier","src":"1527:43:2"},"nativeSrc":"1527:71:2","nodeType":"YulFunctionCall","src":"1527:71:2"},"nativeSrc":"1527:71:2","nodeType":"YulExpressionStatement","src":"1527:71:2"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"1383:222:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1453:9:2","nodeType":"YulTypedName","src":"1453:9:2","type":""},{"name":"value0","nativeSrc":"1465:6:2","nodeType":"YulTypedName","src":"1465:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1476:4:2","nodeType":"YulTypedName","src":"1476:4:2","type":""}],"src":"1383:222:2"},{"body":{"nativeSrc":"1654:79:2","nodeType":"YulBlock","src":"1654:79:2","statements":[{"body":{"nativeSrc":"1711:16:2","nodeType":"YulBlock","src":"1711:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1720:1:2","nodeType":"YulLiteral","src":"1720:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"1723:1:2","nodeType":"YulLiteral","src":"1723:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1713:6:2","nodeType":"YulIdentifier","src":"1713:6:2"},"nativeSrc":"1713:12:2","nodeType":"YulFunctionCall","src":"1713:12:2"},"nativeSrc":"1713:12:2","nodeType":"YulExpressionStatement","src":"1713:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1677:5:2","nodeType":"YulIdentifier","src":"1677:5:2"},{"arguments":[{"name":"value","nativeSrc":"1702:5:2","nodeType":"YulIdentifier","src":"1702:5:2"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"1684:17:2","nodeType":"YulIdentifier","src":"1684:17:2"},"nativeSrc":"1684:24:2","nodeType":"YulFunctionCall","src":"1684:24:2"}],"functionName":{"name":"eq","nativeSrc":"1674:2:2","nodeType":"YulIdentifier","src":"1674:2:2"},"nativeSrc":"1674:35:2","nodeType":"YulFunctionCall","src":"1674:35:2"}],"functionName":{"name":"iszero","nativeSrc":"1667:6:2","nodeType":"YulIdentifier","src":"1667:6:2"},"nativeSrc":"1667:43:2","nodeType":"YulFunctionCall","src":"1667:43:2"},"nativeSrc":"1664:63:2","nodeType":"YulIf","src":"1664:63:2"}]},"name":"validator_revert_t_uint256","nativeSrc":"1611:122:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1647:5:2","nodeType":"YulTypedName","src":"1647:5:2","type":""}],"src":"1611:122:2"},{"body":{"nativeSrc":"1791:87:2","nodeType":"YulBlock","src":"1791:87:2","statements":[{"nativeSrc":"1801:29:2","nodeType":"YulAssignment","src":"1801:29:2","value":{"arguments":[{"name":"offset","nativeSrc":"1823:6:2","nodeType":"YulIdentifier","src":"1823:6:2"}],"functionName":{"name":"calldataload","nativeSrc":"1810:12:2","nodeType":"YulIdentifier","src":"1810:12:2"},"nativeSrc":"1810:20:2","nodeType":"YulFunctionCall","src":"1810:20:2"},"variableNames":[{"name":"value","nativeSrc":"1801:5:2","nodeType":"YulIdentifier","src":"1801:5:2"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1866:5:2","nodeType":"YulIdentifier","src":"1866:5:2"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"1839:26:2","nodeType":"YulIdentifier","src":"1839:26:2"},"nativeSrc":"1839:33:2","nodeType":"YulFunctionCall","src":"1839:33:2"},"nativeSrc":"1839:33:2","nodeType":"YulExpressionStatement","src":"1839:33:2"}]},"name":"abi_decode_t_uint256","nativeSrc":"1739:139:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1769:6:2","nodeType":"YulTypedName","src":"1769:6:2","type":""},{"name":"end","nativeSrc":"1777:3:2","nodeType":"YulTypedName","src":"1777:3:2","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1785:5:2","nodeType":"YulTypedName","src":"1785:5:2","type":""}],"src":"1739:139:2"},{"body":{"nativeSrc":"1950:263:2","nodeType":"YulBlock","src":"1950:263:2","statements":[{"body":{"nativeSrc":"1996:83:2","nodeType":"YulBlock","src":"1996:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"1998:77:2","nodeType":"YulIdentifier","src":"1998:77:2"},"nativeSrc":"1998:79:2","nodeType":"YulFunctionCall","src":"1998:79:2"},"nativeSrc":"1998:79:2","nodeType":"YulExpressionStatement","src":"1998:79:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1971:7:2","nodeType":"YulIdentifier","src":"1971:7:2"},{"name":"headStart","nativeSrc":"1980:9:2","nodeType":"YulIdentifier","src":"1980:9:2"}],"functionName":{"name":"sub","nativeSrc":"1967:3:2","nodeType":"YulIdentifier","src":"1967:3:2"},"nativeSrc":"1967:23:2","nodeType":"YulFunctionCall","src":"1967:23:2"},{"kind":"number","nativeSrc":"1992:2:2","nodeType":"YulLiteral","src":"1992:2:2","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1963:3:2","nodeType":"YulIdentifier","src":"1963:3:2"},"nativeSrc":"1963:32:2","nodeType":"YulFunctionCall","src":"1963:32:2"},"nativeSrc":"1960:119:2","nodeType":"YulIf","src":"1960:119:2"},{"nativeSrc":"2089:117:2","nodeType":"YulBlock","src":"2089:117:2","statements":[{"nativeSrc":"2104:15:2","nodeType":"YulVariableDeclaration","src":"2104:15:2","value":{"kind":"number","nativeSrc":"2118:1:2","nodeType":"YulLiteral","src":"2118:1:2","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"2108:6:2","nodeType":"YulTypedName","src":"2108:6:2","type":""}]},{"nativeSrc":"2133:63:2","nodeType":"YulAssignment","src":"2133:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2168:9:2","nodeType":"YulIdentifier","src":"2168:9:2"},{"name":"offset","nativeSrc":"2179:6:2","nodeType":"YulIdentifier","src":"2179:6:2"}],"functionName":{"name":"add","nativeSrc":"2164:3:2","nodeType":"YulIdentifier","src":"2164:3:2"},"nativeSrc":"2164:22:2","nodeType":"YulFunctionCall","src":"2164:22:2"},{"name":"dataEnd","nativeSrc":"2188:7:2","nodeType":"YulIdentifier","src":"2188:7:2"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"2143:20:2","nodeType":"YulIdentifier","src":"2143:20:2"},"nativeSrc":"2143:53:2","nodeType":"YulFunctionCall","src":"2143:53:2"},"variableNames":[{"name":"value0","nativeSrc":"2133:6:2","nodeType":"YulIdentifier","src":"2133:6:2"}]}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1884:329:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1920:9:2","nodeType":"YulTypedName","src":"1920:9:2","type":""},{"name":"dataEnd","nativeSrc":"1931:7:2","nodeType":"YulTypedName","src":"1931:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1943:6:2","nodeType":"YulTypedName","src":"1943:6:2","type":""}],"src":"1884:329:2"},{"body":{"nativeSrc":"2308:28:2","nodeType":"YulBlock","src":"2308:28:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2325:1:2","nodeType":"YulLiteral","src":"2325:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"2328:1:2","nodeType":"YulLiteral","src":"2328:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2318:6:2","nodeType":"YulIdentifier","src":"2318:6:2"},"nativeSrc":"2318:12:2","nodeType":"YulFunctionCall","src":"2318:12:2"},"nativeSrc":"2318:12:2","nodeType":"YulExpressionStatement","src":"2318:12:2"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2219:117:2","nodeType":"YulFunctionDefinition","src":"2219:117:2"},{"body":{"nativeSrc":"2431:28:2","nodeType":"YulBlock","src":"2431:28:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2448:1:2","nodeType":"YulLiteral","src":"2448:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"2451:1:2","nodeType":"YulLiteral","src":"2451:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2441:6:2","nodeType":"YulIdentifier","src":"2441:6:2"},"nativeSrc":"2441:12:2","nodeType":"YulFunctionCall","src":"2441:12:2"},"nativeSrc":"2441:12:2","nodeType":"YulExpressionStatement","src":"2441:12:2"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"2342:117:2","nodeType":"YulFunctionDefinition","src":"2342:117:2"},{"body":{"nativeSrc":"2513:54:2","nodeType":"YulBlock","src":"2513:54:2","statements":[{"nativeSrc":"2523:38:2","nodeType":"YulAssignment","src":"2523:38:2","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2541:5:2","nodeType":"YulIdentifier","src":"2541:5:2"},{"kind":"number","nativeSrc":"2548:2:2","nodeType":"YulLiteral","src":"2548:2:2","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2537:3:2","nodeType":"YulIdentifier","src":"2537:3:2"},"nativeSrc":"2537:14:2","nodeType":"YulFunctionCall","src":"2537:14:2"},{"arguments":[{"kind":"number","nativeSrc":"2557:2:2","nodeType":"YulLiteral","src":"2557:2:2","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2553:3:2","nodeType":"YulIdentifier","src":"2553:3:2"},"nativeSrc":"2553:7:2","nodeType":"YulFunctionCall","src":"2553:7:2"}],"functionName":{"name":"and","nativeSrc":"2533:3:2","nodeType":"YulIdentifier","src":"2533:3:2"},"nativeSrc":"2533:28:2","nodeType":"YulFunctionCall","src":"2533:28:2"},"variableNames":[{"name":"result","nativeSrc":"2523:6:2","nodeType":"YulIdentifier","src":"2523:6:2"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"2465:102:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2496:5:2","nodeType":"YulTypedName","src":"2496:5:2","type":""}],"returnVariables":[{"name":"result","nativeSrc":"2506:6:2","nodeType":"YulTypedName","src":"2506:6:2","type":""}],"src":"2465:102:2"},{"body":{"nativeSrc":"2601:152:2","nodeType":"YulBlock","src":"2601:152:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2618:1:2","nodeType":"YulLiteral","src":"2618:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"2621:77:2","nodeType":"YulLiteral","src":"2621:77:2","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"2611:6:2","nodeType":"YulIdentifier","src":"2611:6:2"},"nativeSrc":"2611:88:2","nodeType":"YulFunctionCall","src":"2611:88:2"},"nativeSrc":"2611:88:2","nodeType":"YulExpressionStatement","src":"2611:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2715:1:2","nodeType":"YulLiteral","src":"2715:1:2","type":"","value":"4"},{"kind":"number","nativeSrc":"2718:4:2","nodeType":"YulLiteral","src":"2718:4:2","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"2708:6:2","nodeType":"YulIdentifier","src":"2708:6:2"},"nativeSrc":"2708:15:2","nodeType":"YulFunctionCall","src":"2708:15:2"},"nativeSrc":"2708:15:2","nodeType":"YulExpressionStatement","src":"2708:15:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2739:1:2","nodeType":"YulLiteral","src":"2739:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"2742:4:2","nodeType":"YulLiteral","src":"2742:4:2","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2732:6:2","nodeType":"YulIdentifier","src":"2732:6:2"},"nativeSrc":"2732:15:2","nodeType":"YulFunctionCall","src":"2732:15:2"},"nativeSrc":"2732:15:2","nodeType":"YulExpressionStatement","src":"2732:15:2"}]},"name":"panic_error_0x41","nativeSrc":"2573:180:2","nodeType":"YulFunctionDefinition","src":"2573:180:2"},{"body":{"nativeSrc":"2802:238:2","nodeType":"YulBlock","src":"2802:238:2","statements":[{"nativeSrc":"2812:58:2","nodeType":"YulVariableDeclaration","src":"2812:58:2","value":{"arguments":[{"name":"memPtr","nativeSrc":"2834:6:2","nodeType":"YulIdentifier","src":"2834:6:2"},{"arguments":[{"name":"size","nativeSrc":"2864:4:2","nodeType":"YulIdentifier","src":"2864:4:2"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"2842:21:2","nodeType":"YulIdentifier","src":"2842:21:2"},"nativeSrc":"2842:27:2","nodeType":"YulFunctionCall","src":"2842:27:2"}],"functionName":{"name":"add","nativeSrc":"2830:3:2","nodeType":"YulIdentifier","src":"2830:3:2"},"nativeSrc":"2830:40:2","nodeType":"YulFunctionCall","src":"2830:40:2"},"variables":[{"name":"newFreePtr","nativeSrc":"2816:10:2","nodeType":"YulTypedName","src":"2816:10:2","type":""}]},{"body":{"nativeSrc":"2981:22:2","nodeType":"YulBlock","src":"2981:22:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"2983:16:2","nodeType":"YulIdentifier","src":"2983:16:2"},"nativeSrc":"2983:18:2","nodeType":"YulFunctionCall","src":"2983:18:2"},"nativeSrc":"2983:18:2","nodeType":"YulExpressionStatement","src":"2983:18:2"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"2924:10:2","nodeType":"YulIdentifier","src":"2924:10:2"},{"kind":"number","nativeSrc":"2936:18:2","nodeType":"YulLiteral","src":"2936:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2921:2:2","nodeType":"YulIdentifier","src":"2921:2:2"},"nativeSrc":"2921:34:2","nodeType":"YulFunctionCall","src":"2921:34:2"},{"arguments":[{"name":"newFreePtr","nativeSrc":"2960:10:2","nodeType":"YulIdentifier","src":"2960:10:2"},{"name":"memPtr","nativeSrc":"2972:6:2","nodeType":"YulIdentifier","src":"2972:6:2"}],"functionName":{"name":"lt","nativeSrc":"2957:2:2","nodeType":"YulIdentifier","src":"2957:2:2"},"nativeSrc":"2957:22:2","nodeType":"YulFunctionCall","src":"2957:22:2"}],"functionName":{"name":"or","nativeSrc":"2918:2:2","nodeType":"YulIdentifier","src":"2918:2:2"},"nativeSrc":"2918:62:2","nodeType":"YulFunctionCall","src":"2918:62:2"},"nativeSrc":"2915:88:2","nodeType":"YulIf","src":"2915:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3019:2:2","nodeType":"YulLiteral","src":"3019:2:2","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3023:10:2","nodeType":"YulIdentifier","src":"3023:10:2"}],"functionName":{"name":"mstore","nativeSrc":"3012:6:2","nodeType":"YulIdentifier","src":"3012:6:2"},"nativeSrc":"3012:22:2","nodeType":"YulFunctionCall","src":"3012:22:2"},"nativeSrc":"3012:22:2","nodeType":"YulExpressionStatement","src":"3012:22:2"}]},"name":"finalize_allocation","nativeSrc":"2759:281:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"2788:6:2","nodeType":"YulTypedName","src":"2788:6:2","type":""},{"name":"size","nativeSrc":"2796:4:2","nodeType":"YulTypedName","src":"2796:4:2","type":""}],"src":"2759:281:2"},{"body":{"nativeSrc":"3087:88:2","nodeType":"YulBlock","src":"3087:88:2","statements":[{"nativeSrc":"3097:30:2","nodeType":"YulAssignment","src":"3097:30:2","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nativeSrc":"3107:18:2","nodeType":"YulIdentifier","src":"3107:18:2"},"nativeSrc":"3107:20:2","nodeType":"YulFunctionCall","src":"3107:20:2"},"variableNames":[{"name":"memPtr","nativeSrc":"3097:6:2","nodeType":"YulIdentifier","src":"3097:6:2"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"3156:6:2","nodeType":"YulIdentifier","src":"3156:6:2"},{"name":"size","nativeSrc":"3164:4:2","nodeType":"YulIdentifier","src":"3164:4:2"}],"functionName":{"name":"finalize_allocation","nativeSrc":"3136:19:2","nodeType":"YulIdentifier","src":"3136:19:2"},"nativeSrc":"3136:33:2","nodeType":"YulFunctionCall","src":"3136:33:2"},"nativeSrc":"3136:33:2","nodeType":"YulExpressionStatement","src":"3136:33:2"}]},"name":"allocate_memory","nativeSrc":"3046:129:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"3071:4:2","nodeType":"YulTypedName","src":"3071:4:2","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"3080:6:2","nodeType":"YulTypedName","src":"3080:6:2","type":""}],"src":"3046:129:2"},{"body":{"nativeSrc":"3248:241:2","nodeType":"YulBlock","src":"3248:241:2","statements":[{"body":{"nativeSrc":"3353:22:2","nodeType":"YulBlock","src":"3353:22:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3355:16:2","nodeType":"YulIdentifier","src":"3355:16:2"},"nativeSrc":"3355:18:2","nodeType":"YulFunctionCall","src":"3355:18:2"},"nativeSrc":"3355:18:2","nodeType":"YulExpressionStatement","src":"3355:18:2"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3325:6:2","nodeType":"YulIdentifier","src":"3325:6:2"},{"kind":"number","nativeSrc":"3333:18:2","nodeType":"YulLiteral","src":"3333:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3322:2:2","nodeType":"YulIdentifier","src":"3322:2:2"},"nativeSrc":"3322:30:2","nodeType":"YulFunctionCall","src":"3322:30:2"},"nativeSrc":"3319:56:2","nodeType":"YulIf","src":"3319:56:2"},{"nativeSrc":"3385:37:2","nodeType":"YulAssignment","src":"3385:37:2","value":{"arguments":[{"name":"length","nativeSrc":"3415:6:2","nodeType":"YulIdentifier","src":"3415:6:2"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"3393:21:2","nodeType":"YulIdentifier","src":"3393:21:2"},"nativeSrc":"3393:29:2","nodeType":"YulFunctionCall","src":"3393:29:2"},"variableNames":[{"name":"size","nativeSrc":"3385:4:2","nodeType":"YulIdentifier","src":"3385:4:2"}]},{"nativeSrc":"3459:23:2","nodeType":"YulAssignment","src":"3459:23:2","value":{"arguments":[{"name":"size","nativeSrc":"3471:4:2","nodeType":"YulIdentifier","src":"3471:4:2"},{"kind":"number","nativeSrc":"3477:4:2","nodeType":"YulLiteral","src":"3477:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3467:3:2","nodeType":"YulIdentifier","src":"3467:3:2"},"nativeSrc":"3467:15:2","nodeType":"YulFunctionCall","src":"3467:15:2"},"variableNames":[{"name":"size","nativeSrc":"3459:4:2","nodeType":"YulIdentifier","src":"3459:4:2"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nativeSrc":"3181:308:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"3232:6:2","nodeType":"YulTypedName","src":"3232:6:2","type":""}],"returnVariables":[{"name":"size","nativeSrc":"3243:4:2","nodeType":"YulTypedName","src":"3243:4:2","type":""}],"src":"3181:308:2"},{"body":{"nativeSrc":"3559:84:2","nodeType":"YulBlock","src":"3559:84:2","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"3583:3:2","nodeType":"YulIdentifier","src":"3583:3:2"},{"name":"src","nativeSrc":"3588:3:2","nodeType":"YulIdentifier","src":"3588:3:2"},{"name":"length","nativeSrc":"3593:6:2","nodeType":"YulIdentifier","src":"3593:6:2"}],"functionName":{"name":"calldatacopy","nativeSrc":"3570:12:2","nodeType":"YulIdentifier","src":"3570:12:2"},"nativeSrc":"3570:30:2","nodeType":"YulFunctionCall","src":"3570:30:2"},"nativeSrc":"3570:30:2","nodeType":"YulExpressionStatement","src":"3570:30:2"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"3620:3:2","nodeType":"YulIdentifier","src":"3620:3:2"},{"name":"length","nativeSrc":"3625:6:2","nodeType":"YulIdentifier","src":"3625:6:2"}],"functionName":{"name":"add","nativeSrc":"3616:3:2","nodeType":"YulIdentifier","src":"3616:3:2"},"nativeSrc":"3616:16:2","nodeType":"YulFunctionCall","src":"3616:16:2"},{"kind":"number","nativeSrc":"3634:1:2","nodeType":"YulLiteral","src":"3634:1:2","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3609:6:2","nodeType":"YulIdentifier","src":"3609:6:2"},"nativeSrc":"3609:27:2","nodeType":"YulFunctionCall","src":"3609:27:2"},"nativeSrc":"3609:27:2","nodeType":"YulExpressionStatement","src":"3609:27:2"}]},"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"3495:148:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"3541:3:2","nodeType":"YulTypedName","src":"3541:3:2","type":""},{"name":"dst","nativeSrc":"3546:3:2","nodeType":"YulTypedName","src":"3546:3:2","type":""},{"name":"length","nativeSrc":"3551:6:2","nodeType":"YulTypedName","src":"3551:6:2","type":""}],"src":"3495:148:2"},{"body":{"nativeSrc":"3733:341:2","nodeType":"YulBlock","src":"3733:341:2","statements":[{"nativeSrc":"3743:75:2","nodeType":"YulAssignment","src":"3743:75:2","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3810:6:2","nodeType":"YulIdentifier","src":"3810:6:2"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nativeSrc":"3768:41:2","nodeType":"YulIdentifier","src":"3768:41:2"},"nativeSrc":"3768:49:2","nodeType":"YulFunctionCall","src":"3768:49:2"}],"functionName":{"name":"allocate_memory","nativeSrc":"3752:15:2","nodeType":"YulIdentifier","src":"3752:15:2"},"nativeSrc":"3752:66:2","nodeType":"YulFunctionCall","src":"3752:66:2"},"variableNames":[{"name":"array","nativeSrc":"3743:5:2","nodeType":"YulIdentifier","src":"3743:5:2"}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"3834:5:2","nodeType":"YulIdentifier","src":"3834:5:2"},{"name":"length","nativeSrc":"3841:6:2","nodeType":"YulIdentifier","src":"3841:6:2"}],"functionName":{"name":"mstore","nativeSrc":"3827:6:2","nodeType":"YulIdentifier","src":"3827:6:2"},"nativeSrc":"3827:21:2","nodeType":"YulFunctionCall","src":"3827:21:2"},"nativeSrc":"3827:21:2","nodeType":"YulExpressionStatement","src":"3827:21:2"},{"nativeSrc":"3857:27:2","nodeType":"YulVariableDeclaration","src":"3857:27:2","value":{"arguments":[{"name":"array","nativeSrc":"3872:5:2","nodeType":"YulIdentifier","src":"3872:5:2"},{"kind":"number","nativeSrc":"3879:4:2","nodeType":"YulLiteral","src":"3879:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3868:3:2","nodeType":"YulIdentifier","src":"3868:3:2"},"nativeSrc":"3868:16:2","nodeType":"YulFunctionCall","src":"3868:16:2"},"variables":[{"name":"dst","nativeSrc":"3861:3:2","nodeType":"YulTypedName","src":"3861:3:2","type":""}]},{"body":{"nativeSrc":"3922:83:2","nodeType":"YulBlock","src":"3922:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"3924:77:2","nodeType":"YulIdentifier","src":"3924:77:2"},"nativeSrc":"3924:79:2","nodeType":"YulFunctionCall","src":"3924:79:2"},"nativeSrc":"3924:79:2","nodeType":"YulExpressionStatement","src":"3924:79:2"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3903:3:2","nodeType":"YulIdentifier","src":"3903:3:2"},{"name":"length","nativeSrc":"3908:6:2","nodeType":"YulIdentifier","src":"3908:6:2"}],"functionName":{"name":"add","nativeSrc":"3899:3:2","nodeType":"YulIdentifier","src":"3899:3:2"},"nativeSrc":"3899:16:2","nodeType":"YulFunctionCall","src":"3899:16:2"},{"name":"end","nativeSrc":"3917:3:2","nodeType":"YulIdentifier","src":"3917:3:2"}],"functionName":{"name":"gt","nativeSrc":"3896:2:2","nodeType":"YulIdentifier","src":"3896:2:2"},"nativeSrc":"3896:25:2","nodeType":"YulFunctionCall","src":"3896:25:2"},"nativeSrc":"3893:112:2","nodeType":"YulIf","src":"3893:112:2"},{"expression":{"arguments":[{"name":"src","nativeSrc":"4051:3:2","nodeType":"YulIdentifier","src":"4051:3:2"},{"name":"dst","nativeSrc":"4056:3:2","nodeType":"YulIdentifier","src":"4056:3:2"},{"name":"length","nativeSrc":"4061:6:2","nodeType":"YulIdentifier","src":"4061:6:2"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"4014:36:2","nodeType":"YulIdentifier","src":"4014:36:2"},"nativeSrc":"4014:54:2","nodeType":"YulFunctionCall","src":"4014:54:2"},"nativeSrc":"4014:54:2","nodeType":"YulExpressionStatement","src":"4014:54:2"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nativeSrc":"3649:425:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"3706:3:2","nodeType":"YulTypedName","src":"3706:3:2","type":""},{"name":"length","nativeSrc":"3711:6:2","nodeType":"YulTypedName","src":"3711:6:2","type":""},{"name":"end","nativeSrc":"3719:3:2","nodeType":"YulTypedName","src":"3719:3:2","type":""}],"returnVariables":[{"name":"array","nativeSrc":"3727:5:2","nodeType":"YulTypedName","src":"3727:5:2","type":""}],"src":"3649:425:2"},{"body":{"nativeSrc":"4156:278:2","nodeType":"YulBlock","src":"4156:278:2","statements":[{"body":{"nativeSrc":"4205:83:2","nodeType":"YulBlock","src":"4205:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"4207:77:2","nodeType":"YulIdentifier","src":"4207:77:2"},"nativeSrc":"4207:79:2","nodeType":"YulFunctionCall","src":"4207:79:2"},"nativeSrc":"4207:79:2","nodeType":"YulExpressionStatement","src":"4207:79:2"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"4184:6:2","nodeType":"YulIdentifier","src":"4184:6:2"},{"kind":"number","nativeSrc":"4192:4:2","nodeType":"YulLiteral","src":"4192:4:2","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"4180:3:2","nodeType":"YulIdentifier","src":"4180:3:2"},"nativeSrc":"4180:17:2","nodeType":"YulFunctionCall","src":"4180:17:2"},{"name":"end","nativeSrc":"4199:3:2","nodeType":"YulIdentifier","src":"4199:3:2"}],"functionName":{"name":"slt","nativeSrc":"4176:3:2","nodeType":"YulIdentifier","src":"4176:3:2"},"nativeSrc":"4176:27:2","nodeType":"YulFunctionCall","src":"4176:27:2"}],"functionName":{"name":"iszero","nativeSrc":"4169:6:2","nodeType":"YulIdentifier","src":"4169:6:2"},"nativeSrc":"4169:35:2","nodeType":"YulFunctionCall","src":"4169:35:2"},"nativeSrc":"4166:122:2","nodeType":"YulIf","src":"4166:122:2"},{"nativeSrc":"4297:34:2","nodeType":"YulVariableDeclaration","src":"4297:34:2","value":{"arguments":[{"name":"offset","nativeSrc":"4324:6:2","nodeType":"YulIdentifier","src":"4324:6:2"}],"functionName":{"name":"calldataload","nativeSrc":"4311:12:2","nodeType":"YulIdentifier","src":"4311:12:2"},"nativeSrc":"4311:20:2","nodeType":"YulFunctionCall","src":"4311:20:2"},"variables":[{"name":"length","nativeSrc":"4301:6:2","nodeType":"YulTypedName","src":"4301:6:2","type":""}]},{"nativeSrc":"4340:88:2","nodeType":"YulAssignment","src":"4340:88:2","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"4401:6:2","nodeType":"YulIdentifier","src":"4401:6:2"},{"kind":"number","nativeSrc":"4409:4:2","nodeType":"YulLiteral","src":"4409:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4397:3:2","nodeType":"YulIdentifier","src":"4397:3:2"},"nativeSrc":"4397:17:2","nodeType":"YulFunctionCall","src":"4397:17:2"},{"name":"length","nativeSrc":"4416:6:2","nodeType":"YulIdentifier","src":"4416:6:2"},{"name":"end","nativeSrc":"4424:3:2","nodeType":"YulIdentifier","src":"4424:3:2"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nativeSrc":"4349:47:2","nodeType":"YulIdentifier","src":"4349:47:2"},"nativeSrc":"4349:79:2","nodeType":"YulFunctionCall","src":"4349:79:2"},"variableNames":[{"name":"array","nativeSrc":"4340:5:2","nodeType":"YulIdentifier","src":"4340:5:2"}]}]},"name":"abi_decode_t_string_memory_ptr","nativeSrc":"4094:340:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"4134:6:2","nodeType":"YulTypedName","src":"4134:6:2","type":""},{"name":"end","nativeSrc":"4142:3:2","nodeType":"YulTypedName","src":"4142:3:2","type":""}],"returnVariables":[{"name":"array","nativeSrc":"4150:5:2","nodeType":"YulTypedName","src":"4150:5:2","type":""}],"src":"4094:340:2"},{"body":{"nativeSrc":"4567:818:2","nodeType":"YulBlock","src":"4567:818:2","statements":[{"body":{"nativeSrc":"4614:83:2","nodeType":"YulBlock","src":"4614:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"4616:77:2","nodeType":"YulIdentifier","src":"4616:77:2"},"nativeSrc":"4616:79:2","nodeType":"YulFunctionCall","src":"4616:79:2"},"nativeSrc":"4616:79:2","nodeType":"YulExpressionStatement","src":"4616:79:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4588:7:2","nodeType":"YulIdentifier","src":"4588:7:2"},{"name":"headStart","nativeSrc":"4597:9:2","nodeType":"YulIdentifier","src":"4597:9:2"}],"functionName":{"name":"sub","nativeSrc":"4584:3:2","nodeType":"YulIdentifier","src":"4584:3:2"},"nativeSrc":"4584:23:2","nodeType":"YulFunctionCall","src":"4584:23:2"},{"kind":"number","nativeSrc":"4609:3:2","nodeType":"YulLiteral","src":"4609:3:2","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"4580:3:2","nodeType":"YulIdentifier","src":"4580:3:2"},"nativeSrc":"4580:33:2","nodeType":"YulFunctionCall","src":"4580:33:2"},"nativeSrc":"4577:120:2","nodeType":"YulIf","src":"4577:120:2"},{"nativeSrc":"4707:117:2","nodeType":"YulBlock","src":"4707:117:2","statements":[{"nativeSrc":"4722:15:2","nodeType":"YulVariableDeclaration","src":"4722:15:2","value":{"kind":"number","nativeSrc":"4736:1:2","nodeType":"YulLiteral","src":"4736:1:2","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"4726:6:2","nodeType":"YulTypedName","src":"4726:6:2","type":""}]},{"nativeSrc":"4751:63:2","nodeType":"YulAssignment","src":"4751:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4786:9:2","nodeType":"YulIdentifier","src":"4786:9:2"},{"name":"offset","nativeSrc":"4797:6:2","nodeType":"YulIdentifier","src":"4797:6:2"}],"functionName":{"name":"add","nativeSrc":"4782:3:2","nodeType":"YulIdentifier","src":"4782:3:2"},"nativeSrc":"4782:22:2","nodeType":"YulFunctionCall","src":"4782:22:2"},{"name":"dataEnd","nativeSrc":"4806:7:2","nodeType":"YulIdentifier","src":"4806:7:2"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"4761:20:2","nodeType":"YulIdentifier","src":"4761:20:2"},"nativeSrc":"4761:53:2","nodeType":"YulFunctionCall","src":"4761:53:2"},"variableNames":[{"name":"value0","nativeSrc":"4751:6:2","nodeType":"YulIdentifier","src":"4751:6:2"}]}]},{"nativeSrc":"4834:118:2","nodeType":"YulBlock","src":"4834:118:2","statements":[{"nativeSrc":"4849:16:2","nodeType":"YulVariableDeclaration","src":"4849:16:2","value":{"kind":"number","nativeSrc":"4863:2:2","nodeType":"YulLiteral","src":"4863:2:2","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"4853:6:2","nodeType":"YulTypedName","src":"4853:6:2","type":""}]},{"nativeSrc":"4879:63:2","nodeType":"YulAssignment","src":"4879:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4914:9:2","nodeType":"YulIdentifier","src":"4914:9:2"},{"name":"offset","nativeSrc":"4925:6:2","nodeType":"YulIdentifier","src":"4925:6:2"}],"functionName":{"name":"add","nativeSrc":"4910:3:2","nodeType":"YulIdentifier","src":"4910:3:2"},"nativeSrc":"4910:22:2","nodeType":"YulFunctionCall","src":"4910:22:2"},{"name":"dataEnd","nativeSrc":"4934:7:2","nodeType":"YulIdentifier","src":"4934:7:2"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"4889:20:2","nodeType":"YulIdentifier","src":"4889:20:2"},"nativeSrc":"4889:53:2","nodeType":"YulFunctionCall","src":"4889:53:2"},"variableNames":[{"name":"value1","nativeSrc":"4879:6:2","nodeType":"YulIdentifier","src":"4879:6:2"}]}]},{"nativeSrc":"4962:118:2","nodeType":"YulBlock","src":"4962:118:2","statements":[{"nativeSrc":"4977:16:2","nodeType":"YulVariableDeclaration","src":"4977:16:2","value":{"kind":"number","nativeSrc":"4991:2:2","nodeType":"YulLiteral","src":"4991:2:2","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"4981:6:2","nodeType":"YulTypedName","src":"4981:6:2","type":""}]},{"nativeSrc":"5007:63:2","nodeType":"YulAssignment","src":"5007:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5042:9:2","nodeType":"YulIdentifier","src":"5042:9:2"},{"name":"offset","nativeSrc":"5053:6:2","nodeType":"YulIdentifier","src":"5053:6:2"}],"functionName":{"name":"add","nativeSrc":"5038:3:2","nodeType":"YulIdentifier","src":"5038:3:2"},"nativeSrc":"5038:22:2","nodeType":"YulFunctionCall","src":"5038:22:2"},{"name":"dataEnd","nativeSrc":"5062:7:2","nodeType":"YulIdentifier","src":"5062:7:2"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"5017:20:2","nodeType":"YulIdentifier","src":"5017:20:2"},"nativeSrc":"5017:53:2","nodeType":"YulFunctionCall","src":"5017:53:2"},"variableNames":[{"name":"value2","nativeSrc":"5007:6:2","nodeType":"YulIdentifier","src":"5007:6:2"}]}]},{"nativeSrc":"5090:288:2","nodeType":"YulBlock","src":"5090:288:2","statements":[{"nativeSrc":"5105:46:2","nodeType":"YulVariableDeclaration","src":"5105:46:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5136:9:2","nodeType":"YulIdentifier","src":"5136:9:2"},{"kind":"number","nativeSrc":"5147:2:2","nodeType":"YulLiteral","src":"5147:2:2","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5132:3:2","nodeType":"YulIdentifier","src":"5132:3:2"},"nativeSrc":"5132:18:2","nodeType":"YulFunctionCall","src":"5132:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"5119:12:2","nodeType":"YulIdentifier","src":"5119:12:2"},"nativeSrc":"5119:32:2","nodeType":"YulFunctionCall","src":"5119:32:2"},"variables":[{"name":"offset","nativeSrc":"5109:6:2","nodeType":"YulTypedName","src":"5109:6:2","type":""}]},{"body":{"nativeSrc":"5198:83:2","nodeType":"YulBlock","src":"5198:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"5200:77:2","nodeType":"YulIdentifier","src":"5200:77:2"},"nativeSrc":"5200:79:2","nodeType":"YulFunctionCall","src":"5200:79:2"},"nativeSrc":"5200:79:2","nodeType":"YulExpressionStatement","src":"5200:79:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5170:6:2","nodeType":"YulIdentifier","src":"5170:6:2"},{"kind":"number","nativeSrc":"5178:18:2","nodeType":"YulLiteral","src":"5178:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5167:2:2","nodeType":"YulIdentifier","src":"5167:2:2"},"nativeSrc":"5167:30:2","nodeType":"YulFunctionCall","src":"5167:30:2"},"nativeSrc":"5164:117:2","nodeType":"YulIf","src":"5164:117:2"},{"nativeSrc":"5295:73:2","nodeType":"YulAssignment","src":"5295:73:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5340:9:2","nodeType":"YulIdentifier","src":"5340:9:2"},{"name":"offset","nativeSrc":"5351:6:2","nodeType":"YulIdentifier","src":"5351:6:2"}],"functionName":{"name":"add","nativeSrc":"5336:3:2","nodeType":"YulIdentifier","src":"5336:3:2"},"nativeSrc":"5336:22:2","nodeType":"YulFunctionCall","src":"5336:22:2"},{"name":"dataEnd","nativeSrc":"5360:7:2","nodeType":"YulIdentifier","src":"5360:7:2"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nativeSrc":"5305:30:2","nodeType":"YulIdentifier","src":"5305:30:2"},"nativeSrc":"5305:63:2","nodeType":"YulFunctionCall","src":"5305:63:2"},"variableNames":[{"name":"value3","nativeSrc":"5295:6:2","nodeType":"YulIdentifier","src":"5295:6:2"}]}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256t_string_memory_ptr","nativeSrc":"4440:945:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4513:9:2","nodeType":"YulTypedName","src":"4513:9:2","type":""},{"name":"dataEnd","nativeSrc":"4524:7:2","nodeType":"YulTypedName","src":"4524:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4536:6:2","nodeType":"YulTypedName","src":"4536:6:2","type":""},{"name":"value1","nativeSrc":"4544:6:2","nodeType":"YulTypedName","src":"4544:6:2","type":""},{"name":"value2","nativeSrc":"4552:6:2","nodeType":"YulTypedName","src":"4552:6:2","type":""},{"name":"value3","nativeSrc":"4560:6:2","nodeType":"YulTypedName","src":"4560:6:2","type":""}],"src":"4440:945:2"},{"body":{"nativeSrc":"5480:28:2","nodeType":"YulBlock","src":"5480:28:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5497:1:2","nodeType":"YulLiteral","src":"5497:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"5500:1:2","nodeType":"YulLiteral","src":"5500:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5490:6:2","nodeType":"YulIdentifier","src":"5490:6:2"},"nativeSrc":"5490:12:2","nodeType":"YulFunctionCall","src":"5490:12:2"},"nativeSrc":"5490:12:2","nodeType":"YulExpressionStatement","src":"5490:12:2"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"5391:117:2","nodeType":"YulFunctionDefinition","src":"5391:117:2"},{"body":{"nativeSrc":"5603:28:2","nodeType":"YulBlock","src":"5603:28:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5620:1:2","nodeType":"YulLiteral","src":"5620:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"5623:1:2","nodeType":"YulLiteral","src":"5623:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5613:6:2","nodeType":"YulIdentifier","src":"5613:6:2"},"nativeSrc":"5613:12:2","nodeType":"YulFunctionCall","src":"5613:12:2"},"nativeSrc":"5613:12:2","nodeType":"YulExpressionStatement","src":"5613:12:2"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"5514:117:2","nodeType":"YulFunctionDefinition","src":"5514:117:2"},{"body":{"nativeSrc":"5724:478:2","nodeType":"YulBlock","src":"5724:478:2","statements":[{"body":{"nativeSrc":"5773:83:2","nodeType":"YulBlock","src":"5773:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"5775:77:2","nodeType":"YulIdentifier","src":"5775:77:2"},"nativeSrc":"5775:79:2","nodeType":"YulFunctionCall","src":"5775:79:2"},"nativeSrc":"5775:79:2","nodeType":"YulExpressionStatement","src":"5775:79:2"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5752:6:2","nodeType":"YulIdentifier","src":"5752:6:2"},{"kind":"number","nativeSrc":"5760:4:2","nodeType":"YulLiteral","src":"5760:4:2","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"5748:3:2","nodeType":"YulIdentifier","src":"5748:3:2"},"nativeSrc":"5748:17:2","nodeType":"YulFunctionCall","src":"5748:17:2"},{"name":"end","nativeSrc":"5767:3:2","nodeType":"YulIdentifier","src":"5767:3:2"}],"functionName":{"name":"slt","nativeSrc":"5744:3:2","nodeType":"YulIdentifier","src":"5744:3:2"},"nativeSrc":"5744:27:2","nodeType":"YulFunctionCall","src":"5744:27:2"}],"functionName":{"name":"iszero","nativeSrc":"5737:6:2","nodeType":"YulIdentifier","src":"5737:6:2"},"nativeSrc":"5737:35:2","nodeType":"YulFunctionCall","src":"5737:35:2"},"nativeSrc":"5734:122:2","nodeType":"YulIf","src":"5734:122:2"},{"nativeSrc":"5865:30:2","nodeType":"YulAssignment","src":"5865:30:2","value":{"arguments":[{"name":"offset","nativeSrc":"5888:6:2","nodeType":"YulIdentifier","src":"5888:6:2"}],"functionName":{"name":"calldataload","nativeSrc":"5875:12:2","nodeType":"YulIdentifier","src":"5875:12:2"},"nativeSrc":"5875:20:2","nodeType":"YulFunctionCall","src":"5875:20:2"},"variableNames":[{"name":"length","nativeSrc":"5865:6:2","nodeType":"YulIdentifier","src":"5865:6:2"}]},{"body":{"nativeSrc":"5938:83:2","nodeType":"YulBlock","src":"5938:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"5940:77:2","nodeType":"YulIdentifier","src":"5940:77:2"},"nativeSrc":"5940:79:2","nodeType":"YulFunctionCall","src":"5940:79:2"},"nativeSrc":"5940:79:2","nodeType":"YulExpressionStatement","src":"5940:79:2"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"5910:6:2","nodeType":"YulIdentifier","src":"5910:6:2"},{"kind":"number","nativeSrc":"5918:18:2","nodeType":"YulLiteral","src":"5918:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5907:2:2","nodeType":"YulIdentifier","src":"5907:2:2"},"nativeSrc":"5907:30:2","nodeType":"YulFunctionCall","src":"5907:30:2"},"nativeSrc":"5904:117:2","nodeType":"YulIf","src":"5904:117:2"},{"nativeSrc":"6030:29:2","nodeType":"YulAssignment","src":"6030:29:2","value":{"arguments":[{"name":"offset","nativeSrc":"6046:6:2","nodeType":"YulIdentifier","src":"6046:6:2"},{"kind":"number","nativeSrc":"6054:4:2","nodeType":"YulLiteral","src":"6054:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6042:3:2","nodeType":"YulIdentifier","src":"6042:3:2"},"nativeSrc":"6042:17:2","nodeType":"YulFunctionCall","src":"6042:17:2"},"variableNames":[{"name":"arrayPos","nativeSrc":"6030:8:2","nodeType":"YulIdentifier","src":"6030:8:2"}]},{"body":{"nativeSrc":"6113:83:2","nodeType":"YulBlock","src":"6113:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"6115:77:2","nodeType":"YulIdentifier","src":"6115:77:2"},"nativeSrc":"6115:79:2","nodeType":"YulFunctionCall","src":"6115:79:2"},"nativeSrc":"6115:79:2","nodeType":"YulExpressionStatement","src":"6115:79:2"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nativeSrc":"6078:8:2","nodeType":"YulIdentifier","src":"6078:8:2"},{"arguments":[{"name":"length","nativeSrc":"6092:6:2","nodeType":"YulIdentifier","src":"6092:6:2"},{"kind":"number","nativeSrc":"6100:4:2","nodeType":"YulLiteral","src":"6100:4:2","type":"","value":"0x01"}],"functionName":{"name":"mul","nativeSrc":"6088:3:2","nodeType":"YulIdentifier","src":"6088:3:2"},"nativeSrc":"6088:17:2","nodeType":"YulFunctionCall","src":"6088:17:2"}],"functionName":{"name":"add","nativeSrc":"6074:3:2","nodeType":"YulIdentifier","src":"6074:3:2"},"nativeSrc":"6074:32:2","nodeType":"YulFunctionCall","src":"6074:32:2"},{"name":"end","nativeSrc":"6108:3:2","nodeType":"YulIdentifier","src":"6108:3:2"}],"functionName":{"name":"gt","nativeSrc":"6071:2:2","nodeType":"YulIdentifier","src":"6071:2:2"},"nativeSrc":"6071:41:2","nodeType":"YulFunctionCall","src":"6071:41:2"},"nativeSrc":"6068:128:2","nodeType":"YulIf","src":"6068:128:2"}]},"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"5650:552:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5691:6:2","nodeType":"YulTypedName","src":"5691:6:2","type":""},{"name":"end","nativeSrc":"5699:3:2","nodeType":"YulTypedName","src":"5699:3:2","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"5707:8:2","nodeType":"YulTypedName","src":"5707:8:2","type":""},{"name":"length","nativeSrc":"5717:6:2","nodeType":"YulTypedName","src":"5717:6:2","type":""}],"src":"5650:552:2"},{"body":{"nativeSrc":"6310:570:2","nodeType":"YulBlock","src":"6310:570:2","statements":[{"body":{"nativeSrc":"6356:83:2","nodeType":"YulBlock","src":"6356:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"6358:77:2","nodeType":"YulIdentifier","src":"6358:77:2"},"nativeSrc":"6358:79:2","nodeType":"YulFunctionCall","src":"6358:79:2"},"nativeSrc":"6358:79:2","nodeType":"YulExpressionStatement","src":"6358:79:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6331:7:2","nodeType":"YulIdentifier","src":"6331:7:2"},{"name":"headStart","nativeSrc":"6340:9:2","nodeType":"YulIdentifier","src":"6340:9:2"}],"functionName":{"name":"sub","nativeSrc":"6327:3:2","nodeType":"YulIdentifier","src":"6327:3:2"},"nativeSrc":"6327:23:2","nodeType":"YulFunctionCall","src":"6327:23:2"},{"kind":"number","nativeSrc":"6352:2:2","nodeType":"YulLiteral","src":"6352:2:2","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6323:3:2","nodeType":"YulIdentifier","src":"6323:3:2"},"nativeSrc":"6323:32:2","nodeType":"YulFunctionCall","src":"6323:32:2"},"nativeSrc":"6320:119:2","nodeType":"YulIf","src":"6320:119:2"},{"nativeSrc":"6449:117:2","nodeType":"YulBlock","src":"6449:117:2","statements":[{"nativeSrc":"6464:15:2","nodeType":"YulVariableDeclaration","src":"6464:15:2","value":{"kind":"number","nativeSrc":"6478:1:2","nodeType":"YulLiteral","src":"6478:1:2","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"6468:6:2","nodeType":"YulTypedName","src":"6468:6:2","type":""}]},{"nativeSrc":"6493:63:2","nodeType":"YulAssignment","src":"6493:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6528:9:2","nodeType":"YulIdentifier","src":"6528:9:2"},{"name":"offset","nativeSrc":"6539:6:2","nodeType":"YulIdentifier","src":"6539:6:2"}],"functionName":{"name":"add","nativeSrc":"6524:3:2","nodeType":"YulIdentifier","src":"6524:3:2"},"nativeSrc":"6524:22:2","nodeType":"YulFunctionCall","src":"6524:22:2"},{"name":"dataEnd","nativeSrc":"6548:7:2","nodeType":"YulIdentifier","src":"6548:7:2"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"6503:20:2","nodeType":"YulIdentifier","src":"6503:20:2"},"nativeSrc":"6503:53:2","nodeType":"YulFunctionCall","src":"6503:53:2"},"variableNames":[{"name":"value0","nativeSrc":"6493:6:2","nodeType":"YulIdentifier","src":"6493:6:2"}]}]},{"nativeSrc":"6576:297:2","nodeType":"YulBlock","src":"6576:297:2","statements":[{"nativeSrc":"6591:46:2","nodeType":"YulVariableDeclaration","src":"6591:46:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6622:9:2","nodeType":"YulIdentifier","src":"6622:9:2"},{"kind":"number","nativeSrc":"6633:2:2","nodeType":"YulLiteral","src":"6633:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6618:3:2","nodeType":"YulIdentifier","src":"6618:3:2"},"nativeSrc":"6618:18:2","nodeType":"YulFunctionCall","src":"6618:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"6605:12:2","nodeType":"YulIdentifier","src":"6605:12:2"},"nativeSrc":"6605:32:2","nodeType":"YulFunctionCall","src":"6605:32:2"},"variables":[{"name":"offset","nativeSrc":"6595:6:2","nodeType":"YulTypedName","src":"6595:6:2","type":""}]},{"body":{"nativeSrc":"6684:83:2","nodeType":"YulBlock","src":"6684:83:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"6686:77:2","nodeType":"YulIdentifier","src":"6686:77:2"},"nativeSrc":"6686:79:2","nodeType":"YulFunctionCall","src":"6686:79:2"},"nativeSrc":"6686:79:2","nodeType":"YulExpressionStatement","src":"6686:79:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6656:6:2","nodeType":"YulIdentifier","src":"6656:6:2"},{"kind":"number","nativeSrc":"6664:18:2","nodeType":"YulLiteral","src":"6664:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6653:2:2","nodeType":"YulIdentifier","src":"6653:2:2"},"nativeSrc":"6653:30:2","nodeType":"YulFunctionCall","src":"6653:30:2"},"nativeSrc":"6650:117:2","nodeType":"YulIf","src":"6650:117:2"},{"nativeSrc":"6781:82:2","nodeType":"YulAssignment","src":"6781:82:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6835:9:2","nodeType":"YulIdentifier","src":"6835:9:2"},{"name":"offset","nativeSrc":"6846:6:2","nodeType":"YulIdentifier","src":"6846:6:2"}],"functionName":{"name":"add","nativeSrc":"6831:3:2","nodeType":"YulIdentifier","src":"6831:3:2"},"nativeSrc":"6831:22:2","nodeType":"YulFunctionCall","src":"6831:22:2"},{"name":"dataEnd","nativeSrc":"6855:7:2","nodeType":"YulIdentifier","src":"6855:7:2"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"6799:31:2","nodeType":"YulIdentifier","src":"6799:31:2"},"nativeSrc":"6799:64:2","nodeType":"YulFunctionCall","src":"6799:64:2"},"variableNames":[{"name":"value1","nativeSrc":"6781:6:2","nodeType":"YulIdentifier","src":"6781:6:2"},{"name":"value2","nativeSrc":"6789:6:2","nodeType":"YulIdentifier","src":"6789:6:2"}]}]}]},"name":"abi_decode_tuple_t_uint256t_bytes_calldata_ptr","nativeSrc":"6208:672:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6264:9:2","nodeType":"YulTypedName","src":"6264:9:2","type":""},{"name":"dataEnd","nativeSrc":"6275:7:2","nodeType":"YulTypedName","src":"6275:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6287:6:2","nodeType":"YulTypedName","src":"6287:6:2","type":""},{"name":"value1","nativeSrc":"6295:6:2","nodeType":"YulTypedName","src":"6295:6:2","type":""},{"name":"value2","nativeSrc":"6303:6:2","nodeType":"YulTypedName","src":"6303:6:2","type":""}],"src":"6208:672:2"},{"body":{"nativeSrc":"6945:40:2","nodeType":"YulBlock","src":"6945:40:2","statements":[{"nativeSrc":"6956:22:2","nodeType":"YulAssignment","src":"6956:22:2","value":{"arguments":[{"name":"value","nativeSrc":"6972:5:2","nodeType":"YulIdentifier","src":"6972:5:2"}],"functionName":{"name":"mload","nativeSrc":"6966:5:2","nodeType":"YulIdentifier","src":"6966:5:2"},"nativeSrc":"6966:12:2","nodeType":"YulFunctionCall","src":"6966:12:2"},"variableNames":[{"name":"length","nativeSrc":"6956:6:2","nodeType":"YulIdentifier","src":"6956:6:2"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"6886:99:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6928:5:2","nodeType":"YulTypedName","src":"6928:5:2","type":""}],"returnVariables":[{"name":"length","nativeSrc":"6938:6:2","nodeType":"YulTypedName","src":"6938:6:2","type":""}],"src":"6886:99:2"},{"body":{"nativeSrc":"7087:73:2","nodeType":"YulBlock","src":"7087:73:2","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7104:3:2","nodeType":"YulIdentifier","src":"7104:3:2"},{"name":"length","nativeSrc":"7109:6:2","nodeType":"YulIdentifier","src":"7109:6:2"}],"functionName":{"name":"mstore","nativeSrc":"7097:6:2","nodeType":"YulIdentifier","src":"7097:6:2"},"nativeSrc":"7097:19:2","nodeType":"YulFunctionCall","src":"7097:19:2"},"nativeSrc":"7097:19:2","nodeType":"YulExpressionStatement","src":"7097:19:2"},{"nativeSrc":"7125:29:2","nodeType":"YulAssignment","src":"7125:29:2","value":{"arguments":[{"name":"pos","nativeSrc":"7144:3:2","nodeType":"YulIdentifier","src":"7144:3:2"},{"kind":"number","nativeSrc":"7149:4:2","nodeType":"YulLiteral","src":"7149:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7140:3:2","nodeType":"YulIdentifier","src":"7140:3:2"},"nativeSrc":"7140:14:2","nodeType":"YulFunctionCall","src":"7140:14:2"},"variableNames":[{"name":"updated_pos","nativeSrc":"7125:11:2","nodeType":"YulIdentifier","src":"7125:11:2"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"6991:169:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7059:3:2","nodeType":"YulTypedName","src":"7059:3:2","type":""},{"name":"length","nativeSrc":"7064:6:2","nodeType":"YulTypedName","src":"7064:6:2","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"7075:11:2","nodeType":"YulTypedName","src":"7075:11:2","type":""}],"src":"6991:169:2"},{"body":{"nativeSrc":"7228:186:2","nodeType":"YulBlock","src":"7228:186:2","statements":[{"nativeSrc":"7239:10:2","nodeType":"YulVariableDeclaration","src":"7239:10:2","value":{"kind":"number","nativeSrc":"7248:1:2","nodeType":"YulLiteral","src":"7248:1:2","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7243:1:2","nodeType":"YulTypedName","src":"7243:1:2","type":""}]},{"body":{"nativeSrc":"7308:63:2","nodeType":"YulBlock","src":"7308:63:2","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"7333:3:2","nodeType":"YulIdentifier","src":"7333:3:2"},{"name":"i","nativeSrc":"7338:1:2","nodeType":"YulIdentifier","src":"7338:1:2"}],"functionName":{"name":"add","nativeSrc":"7329:3:2","nodeType":"YulIdentifier","src":"7329:3:2"},"nativeSrc":"7329:11:2","nodeType":"YulFunctionCall","src":"7329:11:2"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"7352:3:2","nodeType":"YulIdentifier","src":"7352:3:2"},{"name":"i","nativeSrc":"7357:1:2","nodeType":"YulIdentifier","src":"7357:1:2"}],"functionName":{"name":"add","nativeSrc":"7348:3:2","nodeType":"YulIdentifier","src":"7348:3:2"},"nativeSrc":"7348:11:2","nodeType":"YulFunctionCall","src":"7348:11:2"}],"functionName":{"name":"mload","nativeSrc":"7342:5:2","nodeType":"YulIdentifier","src":"7342:5:2"},"nativeSrc":"7342:18:2","nodeType":"YulFunctionCall","src":"7342:18:2"}],"functionName":{"name":"mstore","nativeSrc":"7322:6:2","nodeType":"YulIdentifier","src":"7322:6:2"},"nativeSrc":"7322:39:2","nodeType":"YulFunctionCall","src":"7322:39:2"},"nativeSrc":"7322:39:2","nodeType":"YulExpressionStatement","src":"7322:39:2"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7269:1:2","nodeType":"YulIdentifier","src":"7269:1:2"},{"name":"length","nativeSrc":"7272:6:2","nodeType":"YulIdentifier","src":"7272:6:2"}],"functionName":{"name":"lt","nativeSrc":"7266:2:2","nodeType":"YulIdentifier","src":"7266:2:2"},"nativeSrc":"7266:13:2","nodeType":"YulFunctionCall","src":"7266:13:2"},"nativeSrc":"7258:113:2","nodeType":"YulForLoop","post":{"nativeSrc":"7280:19:2","nodeType":"YulBlock","src":"7280:19:2","statements":[{"nativeSrc":"7282:15:2","nodeType":"YulAssignment","src":"7282:15:2","value":{"arguments":[{"name":"i","nativeSrc":"7291:1:2","nodeType":"YulIdentifier","src":"7291:1:2"},{"kind":"number","nativeSrc":"7294:2:2","nodeType":"YulLiteral","src":"7294:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7287:3:2","nodeType":"YulIdentifier","src":"7287:3:2"},"nativeSrc":"7287:10:2","nodeType":"YulFunctionCall","src":"7287:10:2"},"variableNames":[{"name":"i","nativeSrc":"7282:1:2","nodeType":"YulIdentifier","src":"7282:1:2"}]}]},"pre":{"nativeSrc":"7262:3:2","nodeType":"YulBlock","src":"7262:3:2","statements":[]},"src":"7258:113:2"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"7391:3:2","nodeType":"YulIdentifier","src":"7391:3:2"},{"name":"length","nativeSrc":"7396:6:2","nodeType":"YulIdentifier","src":"7396:6:2"}],"functionName":{"name":"add","nativeSrc":"7387:3:2","nodeType":"YulIdentifier","src":"7387:3:2"},"nativeSrc":"7387:16:2","nodeType":"YulFunctionCall","src":"7387:16:2"},{"kind":"number","nativeSrc":"7405:1:2","nodeType":"YulLiteral","src":"7405:1:2","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"7380:6:2","nodeType":"YulIdentifier","src":"7380:6:2"},"nativeSrc":"7380:27:2","nodeType":"YulFunctionCall","src":"7380:27:2"},"nativeSrc":"7380:27:2","nodeType":"YulExpressionStatement","src":"7380:27:2"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"7166:248:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"7210:3:2","nodeType":"YulTypedName","src":"7210:3:2","type":""},{"name":"dst","nativeSrc":"7215:3:2","nodeType":"YulTypedName","src":"7215:3:2","type":""},{"name":"length","nativeSrc":"7220:6:2","nodeType":"YulTypedName","src":"7220:6:2","type":""}],"src":"7166:248:2"},{"body":{"nativeSrc":"7512:285:2","nodeType":"YulBlock","src":"7512:285:2","statements":[{"nativeSrc":"7522:53:2","nodeType":"YulVariableDeclaration","src":"7522:53:2","value":{"arguments":[{"name":"value","nativeSrc":"7569:5:2","nodeType":"YulIdentifier","src":"7569:5:2"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"7536:32:2","nodeType":"YulIdentifier","src":"7536:32:2"},"nativeSrc":"7536:39:2","nodeType":"YulFunctionCall","src":"7536:39:2"},"variables":[{"name":"length","nativeSrc":"7526:6:2","nodeType":"YulTypedName","src":"7526:6:2","type":""}]},{"nativeSrc":"7584:78:2","nodeType":"YulAssignment","src":"7584:78:2","value":{"arguments":[{"name":"pos","nativeSrc":"7650:3:2","nodeType":"YulIdentifier","src":"7650:3:2"},{"name":"length","nativeSrc":"7655:6:2","nodeType":"YulIdentifier","src":"7655:6:2"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"7591:58:2","nodeType":"YulIdentifier","src":"7591:58:2"},"nativeSrc":"7591:71:2","nodeType":"YulFunctionCall","src":"7591:71:2"},"variableNames":[{"name":"pos","nativeSrc":"7584:3:2","nodeType":"YulIdentifier","src":"7584:3:2"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7710:5:2","nodeType":"YulIdentifier","src":"7710:5:2"},{"kind":"number","nativeSrc":"7717:4:2","nodeType":"YulLiteral","src":"7717:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7706:3:2","nodeType":"YulIdentifier","src":"7706:3:2"},"nativeSrc":"7706:16:2","nodeType":"YulFunctionCall","src":"7706:16:2"},{"name":"pos","nativeSrc":"7724:3:2","nodeType":"YulIdentifier","src":"7724:3:2"},{"name":"length","nativeSrc":"7729:6:2","nodeType":"YulIdentifier","src":"7729:6:2"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"7671:34:2","nodeType":"YulIdentifier","src":"7671:34:2"},"nativeSrc":"7671:65:2","nodeType":"YulFunctionCall","src":"7671:65:2"},"nativeSrc":"7671:65:2","nodeType":"YulExpressionStatement","src":"7671:65:2"},{"nativeSrc":"7745:46:2","nodeType":"YulAssignment","src":"7745:46:2","value":{"arguments":[{"name":"pos","nativeSrc":"7756:3:2","nodeType":"YulIdentifier","src":"7756:3:2"},{"arguments":[{"name":"length","nativeSrc":"7783:6:2","nodeType":"YulIdentifier","src":"7783:6:2"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"7761:21:2","nodeType":"YulIdentifier","src":"7761:21:2"},"nativeSrc":"7761:29:2","nodeType":"YulFunctionCall","src":"7761:29:2"}],"functionName":{"name":"add","nativeSrc":"7752:3:2","nodeType":"YulIdentifier","src":"7752:3:2"},"nativeSrc":"7752:39:2","nodeType":"YulFunctionCall","src":"7752:39:2"},"variableNames":[{"name":"end","nativeSrc":"7745:3:2","nodeType":"YulIdentifier","src":"7745:3:2"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"7420:377:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7493:5:2","nodeType":"YulTypedName","src":"7493:5:2","type":""},{"name":"pos","nativeSrc":"7500:3:2","nodeType":"YulTypedName","src":"7500:3:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7508:3:2","nodeType":"YulTypedName","src":"7508:3:2","type":""}],"src":"7420:377:2"},{"body":{"nativeSrc":"7949:277:2","nodeType":"YulBlock","src":"7949:277:2","statements":[{"nativeSrc":"7959:26:2","nodeType":"YulAssignment","src":"7959:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"7971:9:2","nodeType":"YulIdentifier","src":"7971:9:2"},{"kind":"number","nativeSrc":"7982:2:2","nodeType":"YulLiteral","src":"7982:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7967:3:2","nodeType":"YulIdentifier","src":"7967:3:2"},"nativeSrc":"7967:18:2","nodeType":"YulFunctionCall","src":"7967:18:2"},"variableNames":[{"name":"tail","nativeSrc":"7959:4:2","nodeType":"YulIdentifier","src":"7959:4:2"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"8039:6:2","nodeType":"YulIdentifier","src":"8039:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"8052:9:2","nodeType":"YulIdentifier","src":"8052:9:2"},{"kind":"number","nativeSrc":"8063:1:2","nodeType":"YulLiteral","src":"8063:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8048:3:2","nodeType":"YulIdentifier","src":"8048:3:2"},"nativeSrc":"8048:17:2","nodeType":"YulFunctionCall","src":"8048:17:2"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"7995:43:2","nodeType":"YulIdentifier","src":"7995:43:2"},"nativeSrc":"7995:71:2","nodeType":"YulFunctionCall","src":"7995:71:2"},"nativeSrc":"7995:71:2","nodeType":"YulExpressionStatement","src":"7995:71:2"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8087:9:2","nodeType":"YulIdentifier","src":"8087:9:2"},{"kind":"number","nativeSrc":"8098:2:2","nodeType":"YulLiteral","src":"8098:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8083:3:2","nodeType":"YulIdentifier","src":"8083:3:2"},"nativeSrc":"8083:18:2","nodeType":"YulFunctionCall","src":"8083:18:2"},{"arguments":[{"name":"tail","nativeSrc":"8107:4:2","nodeType":"YulIdentifier","src":"8107:4:2"},{"name":"headStart","nativeSrc":"8113:9:2","nodeType":"YulIdentifier","src":"8113:9:2"}],"functionName":{"name":"sub","nativeSrc":"8103:3:2","nodeType":"YulIdentifier","src":"8103:3:2"},"nativeSrc":"8103:20:2","nodeType":"YulFunctionCall","src":"8103:20:2"}],"functionName":{"name":"mstore","nativeSrc":"8076:6:2","nodeType":"YulIdentifier","src":"8076:6:2"},"nativeSrc":"8076:48:2","nodeType":"YulFunctionCall","src":"8076:48:2"},"nativeSrc":"8076:48:2","nodeType":"YulExpressionStatement","src":"8076:48:2"},{"nativeSrc":"8133:86:2","nodeType":"YulAssignment","src":"8133:86:2","value":{"arguments":[{"name":"value1","nativeSrc":"8205:6:2","nodeType":"YulIdentifier","src":"8205:6:2"},{"name":"tail","nativeSrc":"8214:4:2","nodeType":"YulIdentifier","src":"8214:4:2"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"8141:63:2","nodeType":"YulIdentifier","src":"8141:63:2"},"nativeSrc":"8141:78:2","nodeType":"YulFunctionCall","src":"8141:78:2"},"variableNames":[{"name":"tail","nativeSrc":"8133:4:2","nodeType":"YulIdentifier","src":"8133:4:2"}]}]},"name":"abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7803:423:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7913:9:2","nodeType":"YulTypedName","src":"7913:9:2","type":""},{"name":"value1","nativeSrc":"7925:6:2","nodeType":"YulTypedName","src":"7925:6:2","type":""},{"name":"value0","nativeSrc":"7933:6:2","nodeType":"YulTypedName","src":"7933:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7944:4:2","nodeType":"YulTypedName","src":"7944:4:2","type":""}],"src":"7803:423:2"},{"body":{"nativeSrc":"8297:53:2","nodeType":"YulBlock","src":"8297:53:2","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"8314:3:2","nodeType":"YulIdentifier","src":"8314:3:2"},{"arguments":[{"name":"value","nativeSrc":"8337:5:2","nodeType":"YulIdentifier","src":"8337:5:2"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"8319:17:2","nodeType":"YulIdentifier","src":"8319:17:2"},"nativeSrc":"8319:24:2","nodeType":"YulFunctionCall","src":"8319:24:2"}],"functionName":{"name":"mstore","nativeSrc":"8307:6:2","nodeType":"YulIdentifier","src":"8307:6:2"},"nativeSrc":"8307:37:2","nodeType":"YulFunctionCall","src":"8307:37:2"},"nativeSrc":"8307:37:2","nodeType":"YulExpressionStatement","src":"8307:37:2"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"8232:118:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8285:5:2","nodeType":"YulTypedName","src":"8285:5:2","type":""},{"name":"pos","nativeSrc":"8292:3:2","nodeType":"YulTypedName","src":"8292:3:2","type":""}],"src":"8232:118:2"},{"body":{"nativeSrc":"8398:48:2","nodeType":"YulBlock","src":"8398:48:2","statements":[{"nativeSrc":"8408:32:2","nodeType":"YulAssignment","src":"8408:32:2","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8433:5:2","nodeType":"YulIdentifier","src":"8433:5:2"}],"functionName":{"name":"iszero","nativeSrc":"8426:6:2","nodeType":"YulIdentifier","src":"8426:6:2"},"nativeSrc":"8426:13:2","nodeType":"YulFunctionCall","src":"8426:13:2"}],"functionName":{"name":"iszero","nativeSrc":"8419:6:2","nodeType":"YulIdentifier","src":"8419:6:2"},"nativeSrc":"8419:21:2","nodeType":"YulFunctionCall","src":"8419:21:2"},"variableNames":[{"name":"cleaned","nativeSrc":"8408:7:2","nodeType":"YulIdentifier","src":"8408:7:2"}]}]},"name":"cleanup_t_bool","nativeSrc":"8356:90:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8380:5:2","nodeType":"YulTypedName","src":"8380:5:2","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"8390:7:2","nodeType":"YulTypedName","src":"8390:7:2","type":""}],"src":"8356:90:2"},{"body":{"nativeSrc":"8511:50:2","nodeType":"YulBlock","src":"8511:50:2","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"8528:3:2","nodeType":"YulIdentifier","src":"8528:3:2"},{"arguments":[{"name":"value","nativeSrc":"8548:5:2","nodeType":"YulIdentifier","src":"8548:5:2"}],"functionName":{"name":"cleanup_t_bool","nativeSrc":"8533:14:2","nodeType":"YulIdentifier","src":"8533:14:2"},"nativeSrc":"8533:21:2","nodeType":"YulFunctionCall","src":"8533:21:2"}],"functionName":{"name":"mstore","nativeSrc":"8521:6:2","nodeType":"YulIdentifier","src":"8521:6:2"},"nativeSrc":"8521:34:2","nodeType":"YulFunctionCall","src":"8521:34:2"},"nativeSrc":"8521:34:2","nodeType":"YulExpressionStatement","src":"8521:34:2"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"8452:109:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8499:5:2","nodeType":"YulTypedName","src":"8499:5:2","type":""},{"name":"pos","nativeSrc":"8506:3:2","nodeType":"YulTypedName","src":"8506:3:2","type":""}],"src":"8452:109:2"},{"body":{"nativeSrc":"8715:282:2","nodeType":"YulBlock","src":"8715:282:2","statements":[{"nativeSrc":"8725:26:2","nodeType":"YulAssignment","src":"8725:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"8737:9:2","nodeType":"YulIdentifier","src":"8737:9:2"},{"kind":"number","nativeSrc":"8748:2:2","nodeType":"YulLiteral","src":"8748:2:2","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8733:3:2","nodeType":"YulIdentifier","src":"8733:3:2"},"nativeSrc":"8733:18:2","nodeType":"YulFunctionCall","src":"8733:18:2"},"variableNames":[{"name":"tail","nativeSrc":"8725:4:2","nodeType":"YulIdentifier","src":"8725:4:2"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"8805:6:2","nodeType":"YulIdentifier","src":"8805:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"8818:9:2","nodeType":"YulIdentifier","src":"8818:9:2"},{"kind":"number","nativeSrc":"8829:1:2","nodeType":"YulLiteral","src":"8829:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8814:3:2","nodeType":"YulIdentifier","src":"8814:3:2"},"nativeSrc":"8814:17:2","nodeType":"YulFunctionCall","src":"8814:17:2"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"8761:43:2","nodeType":"YulIdentifier","src":"8761:43:2"},"nativeSrc":"8761:71:2","nodeType":"YulFunctionCall","src":"8761:71:2"},"nativeSrc":"8761:71:2","nodeType":"YulExpressionStatement","src":"8761:71:2"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"8886:6:2","nodeType":"YulIdentifier","src":"8886:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"8899:9:2","nodeType":"YulIdentifier","src":"8899:9:2"},{"kind":"number","nativeSrc":"8910:2:2","nodeType":"YulLiteral","src":"8910:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8895:3:2","nodeType":"YulIdentifier","src":"8895:3:2"},"nativeSrc":"8895:18:2","nodeType":"YulFunctionCall","src":"8895:18:2"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"8842:43:2","nodeType":"YulIdentifier","src":"8842:43:2"},"nativeSrc":"8842:72:2","nodeType":"YulFunctionCall","src":"8842:72:2"},"nativeSrc":"8842:72:2","nodeType":"YulExpressionStatement","src":"8842:72:2"},{"expression":{"arguments":[{"name":"value2","nativeSrc":"8962:6:2","nodeType":"YulIdentifier","src":"8962:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"8975:9:2","nodeType":"YulIdentifier","src":"8975:9:2"},{"kind":"number","nativeSrc":"8986:2:2","nodeType":"YulLiteral","src":"8986:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8971:3:2","nodeType":"YulIdentifier","src":"8971:3:2"},"nativeSrc":"8971:18:2","nodeType":"YulFunctionCall","src":"8971:18:2"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"8924:37:2","nodeType":"YulIdentifier","src":"8924:37:2"},"nativeSrc":"8924:66:2","nodeType":"YulFunctionCall","src":"8924:66:2"},"nativeSrc":"8924:66:2","nodeType":"YulExpressionStatement","src":"8924:66:2"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nativeSrc":"8567:430:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8671:9:2","nodeType":"YulTypedName","src":"8671:9:2","type":""},{"name":"value2","nativeSrc":"8683:6:2","nodeType":"YulTypedName","src":"8683:6:2","type":""},{"name":"value1","nativeSrc":"8691:6:2","nodeType":"YulTypedName","src":"8691:6:2","type":""},{"name":"value0","nativeSrc":"8699:6:2","nodeType":"YulTypedName","src":"8699:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8710:4:2","nodeType":"YulTypedName","src":"8710:4:2","type":""}],"src":"8567:430:2"},{"body":{"nativeSrc":"9031:152:2","nodeType":"YulBlock","src":"9031:152:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9048:1:2","nodeType":"YulLiteral","src":"9048:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"9051:77:2","nodeType":"YulLiteral","src":"9051:77:2","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"9041:6:2","nodeType":"YulIdentifier","src":"9041:6:2"},"nativeSrc":"9041:88:2","nodeType":"YulFunctionCall","src":"9041:88:2"},"nativeSrc":"9041:88:2","nodeType":"YulExpressionStatement","src":"9041:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9145:1:2","nodeType":"YulLiteral","src":"9145:1:2","type":"","value":"4"},{"kind":"number","nativeSrc":"9148:4:2","nodeType":"YulLiteral","src":"9148:4:2","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"9138:6:2","nodeType":"YulIdentifier","src":"9138:6:2"},"nativeSrc":"9138:15:2","nodeType":"YulFunctionCall","src":"9138:15:2"},"nativeSrc":"9138:15:2","nodeType":"YulExpressionStatement","src":"9138:15:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9169:1:2","nodeType":"YulLiteral","src":"9169:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"9172:4:2","nodeType":"YulLiteral","src":"9172:4:2","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9162:6:2","nodeType":"YulIdentifier","src":"9162:6:2"},"nativeSrc":"9162:15:2","nodeType":"YulFunctionCall","src":"9162:15:2"},"nativeSrc":"9162:15:2","nodeType":"YulExpressionStatement","src":"9162:15:2"}]},"name":"panic_error_0x11","nativeSrc":"9003:180:2","nodeType":"YulFunctionDefinition","src":"9003:180:2"},{"body":{"nativeSrc":"9232:190:2","nodeType":"YulBlock","src":"9232:190:2","statements":[{"nativeSrc":"9242:33:2","nodeType":"YulAssignment","src":"9242:33:2","value":{"arguments":[{"name":"value","nativeSrc":"9269:5:2","nodeType":"YulIdentifier","src":"9269:5:2"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"9251:17:2","nodeType":"YulIdentifier","src":"9251:17:2"},"nativeSrc":"9251:24:2","nodeType":"YulFunctionCall","src":"9251:24:2"},"variableNames":[{"name":"value","nativeSrc":"9242:5:2","nodeType":"YulIdentifier","src":"9242:5:2"}]},{"body":{"nativeSrc":"9365:22:2","nodeType":"YulBlock","src":"9365:22:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"9367:16:2","nodeType":"YulIdentifier","src":"9367:16:2"},"nativeSrc":"9367:18:2","nodeType":"YulFunctionCall","src":"9367:18:2"},"nativeSrc":"9367:18:2","nodeType":"YulExpressionStatement","src":"9367:18:2"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"9290:5:2","nodeType":"YulIdentifier","src":"9290:5:2"},{"kind":"number","nativeSrc":"9297:66:2","nodeType":"YulLiteral","src":"9297:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nativeSrc":"9287:2:2","nodeType":"YulIdentifier","src":"9287:2:2"},"nativeSrc":"9287:77:2","nodeType":"YulFunctionCall","src":"9287:77:2"},"nativeSrc":"9284:103:2","nodeType":"YulIf","src":"9284:103:2"},{"nativeSrc":"9396:20:2","nodeType":"YulAssignment","src":"9396:20:2","value":{"arguments":[{"name":"value","nativeSrc":"9407:5:2","nodeType":"YulIdentifier","src":"9407:5:2"},{"kind":"number","nativeSrc":"9414:1:2","nodeType":"YulLiteral","src":"9414:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9403:3:2","nodeType":"YulIdentifier","src":"9403:3:2"},"nativeSrc":"9403:13:2","nodeType":"YulFunctionCall","src":"9403:13:2"},"variableNames":[{"name":"ret","nativeSrc":"9396:3:2","nodeType":"YulIdentifier","src":"9396:3:2"}]}]},"name":"increment_t_uint256","nativeSrc":"9189:233:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9218:5:2","nodeType":"YulTypedName","src":"9218:5:2","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"9228:3:2","nodeType":"YulTypedName","src":"9228:3:2","type":""}],"src":"9189:233:2"},{"body":{"nativeSrc":"9554:206:2","nodeType":"YulBlock","src":"9554:206:2","statements":[{"nativeSrc":"9564:26:2","nodeType":"YulAssignment","src":"9564:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"9576:9:2","nodeType":"YulIdentifier","src":"9576:9:2"},{"kind":"number","nativeSrc":"9587:2:2","nodeType":"YulLiteral","src":"9587:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9572:3:2","nodeType":"YulIdentifier","src":"9572:3:2"},"nativeSrc":"9572:18:2","nodeType":"YulFunctionCall","src":"9572:18:2"},"variableNames":[{"name":"tail","nativeSrc":"9564:4:2","nodeType":"YulIdentifier","src":"9564:4:2"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"9644:6:2","nodeType":"YulIdentifier","src":"9644:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"9657:9:2","nodeType":"YulIdentifier","src":"9657:9:2"},{"kind":"number","nativeSrc":"9668:1:2","nodeType":"YulLiteral","src":"9668:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9653:3:2","nodeType":"YulIdentifier","src":"9653:3:2"},"nativeSrc":"9653:17:2","nodeType":"YulFunctionCall","src":"9653:17:2"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"9600:43:2","nodeType":"YulIdentifier","src":"9600:43:2"},"nativeSrc":"9600:71:2","nodeType":"YulFunctionCall","src":"9600:71:2"},"nativeSrc":"9600:71:2","nodeType":"YulExpressionStatement","src":"9600:71:2"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"9725:6:2","nodeType":"YulIdentifier","src":"9725:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"9738:9:2","nodeType":"YulIdentifier","src":"9738:9:2"},{"kind":"number","nativeSrc":"9749:2:2","nodeType":"YulLiteral","src":"9749:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9734:3:2","nodeType":"YulIdentifier","src":"9734:3:2"},"nativeSrc":"9734:18:2","nodeType":"YulFunctionCall","src":"9734:18:2"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"9681:43:2","nodeType":"YulIdentifier","src":"9681:43:2"},"nativeSrc":"9681:72:2","nodeType":"YulFunctionCall","src":"9681:72:2"},"nativeSrc":"9681:72:2","nodeType":"YulExpressionStatement","src":"9681:72:2"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"9428:332:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9518:9:2","nodeType":"YulTypedName","src":"9518:9:2","type":""},{"name":"value1","nativeSrc":"9530:6:2","nodeType":"YulTypedName","src":"9530:6:2","type":""},{"name":"value0","nativeSrc":"9538:6:2","nodeType":"YulTypedName","src":"9538:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9549:4:2","nodeType":"YulTypedName","src":"9549:4:2","type":""}],"src":"9428:332:2"},{"body":{"nativeSrc":"9872:128:2","nodeType":"YulBlock","src":"9872:128:2","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"9894:6:2","nodeType":"YulIdentifier","src":"9894:6:2"},{"kind":"number","nativeSrc":"9902:1:2","nodeType":"YulLiteral","src":"9902:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9890:3:2","nodeType":"YulIdentifier","src":"9890:3:2"},"nativeSrc":"9890:14:2","nodeType":"YulFunctionCall","src":"9890:14:2"},{"hexValue":"4f6e6c792061737369676e6564206c61777965722063616e2061637469766174","kind":"string","nativeSrc":"9906:34:2","nodeType":"YulLiteral","src":"9906:34:2","type":"","value":"Only assigned lawyer can activat"}],"functionName":{"name":"mstore","nativeSrc":"9883:6:2","nodeType":"YulIdentifier","src":"9883:6:2"},"nativeSrc":"9883:58:2","nodeType":"YulFunctionCall","src":"9883:58:2"},"nativeSrc":"9883:58:2","nodeType":"YulExpressionStatement","src":"9883:58:2"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"9962:6:2","nodeType":"YulIdentifier","src":"9962:6:2"},{"kind":"number","nativeSrc":"9970:2:2","nodeType":"YulLiteral","src":"9970:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9958:3:2","nodeType":"YulIdentifier","src":"9958:3:2"},"nativeSrc":"9958:15:2","nodeType":"YulFunctionCall","src":"9958:15:2"},{"hexValue":"65207468652074657374616d656e74","kind":"string","nativeSrc":"9975:17:2","nodeType":"YulLiteral","src":"9975:17:2","type":"","value":"e the testament"}],"functionName":{"name":"mstore","nativeSrc":"9951:6:2","nodeType":"YulIdentifier","src":"9951:6:2"},"nativeSrc":"9951:42:2","nodeType":"YulFunctionCall","src":"9951:42:2"},"nativeSrc":"9951:42:2","nodeType":"YulExpressionStatement","src":"9951:42:2"}]},"name":"store_literal_in_memory_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8","nativeSrc":"9766:234:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"9864:6:2","nodeType":"YulTypedName","src":"9864:6:2","type":""}],"src":"9766:234:2"},{"body":{"nativeSrc":"10152:220:2","nodeType":"YulBlock","src":"10152:220:2","statements":[{"nativeSrc":"10162:74:2","nodeType":"YulAssignment","src":"10162:74:2","value":{"arguments":[{"name":"pos","nativeSrc":"10228:3:2","nodeType":"YulIdentifier","src":"10228:3:2"},{"kind":"number","nativeSrc":"10233:2:2","nodeType":"YulLiteral","src":"10233:2:2","type":"","value":"47"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"10169:58:2","nodeType":"YulIdentifier","src":"10169:58:2"},"nativeSrc":"10169:67:2","nodeType":"YulFunctionCall","src":"10169:67:2"},"variableNames":[{"name":"pos","nativeSrc":"10162:3:2","nodeType":"YulIdentifier","src":"10162:3:2"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"10334:3:2","nodeType":"YulIdentifier","src":"10334:3:2"}],"functionName":{"name":"store_literal_in_memory_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8","nativeSrc":"10245:88:2","nodeType":"YulIdentifier","src":"10245:88:2"},"nativeSrc":"10245:93:2","nodeType":"YulFunctionCall","src":"10245:93:2"},"nativeSrc":"10245:93:2","nodeType":"YulExpressionStatement","src":"10245:93:2"},{"nativeSrc":"10347:19:2","nodeType":"YulAssignment","src":"10347:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"10358:3:2","nodeType":"YulIdentifier","src":"10358:3:2"},{"kind":"number","nativeSrc":"10363:2:2","nodeType":"YulLiteral","src":"10363:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10354:3:2","nodeType":"YulIdentifier","src":"10354:3:2"},"nativeSrc":"10354:12:2","nodeType":"YulFunctionCall","src":"10354:12:2"},"variableNames":[{"name":"end","nativeSrc":"10347:3:2","nodeType":"YulIdentifier","src":"10347:3:2"}]}]},"name":"abi_encode_t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8_to_t_string_memory_ptr_fromStack","nativeSrc":"10006:366:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"10140:3:2","nodeType":"YulTypedName","src":"10140:3:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"10148:3:2","nodeType":"YulTypedName","src":"10148:3:2","type":""}],"src":"10006:366:2"},{"body":{"nativeSrc":"10549:248:2","nodeType":"YulBlock","src":"10549:248:2","statements":[{"nativeSrc":"10559:26:2","nodeType":"YulAssignment","src":"10559:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"10571:9:2","nodeType":"YulIdentifier","src":"10571:9:2"},{"kind":"number","nativeSrc":"10582:2:2","nodeType":"YulLiteral","src":"10582:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10567:3:2","nodeType":"YulIdentifier","src":"10567:3:2"},"nativeSrc":"10567:18:2","nodeType":"YulFunctionCall","src":"10567:18:2"},"variableNames":[{"name":"tail","nativeSrc":"10559:4:2","nodeType":"YulIdentifier","src":"10559:4:2"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10606:9:2","nodeType":"YulIdentifier","src":"10606:9:2"},{"kind":"number","nativeSrc":"10617:1:2","nodeType":"YulLiteral","src":"10617:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"10602:3:2","nodeType":"YulIdentifier","src":"10602:3:2"},"nativeSrc":"10602:17:2","nodeType":"YulFunctionCall","src":"10602:17:2"},{"arguments":[{"name":"tail","nativeSrc":"10625:4:2","nodeType":"YulIdentifier","src":"10625:4:2"},{"name":"headStart","nativeSrc":"10631:9:2","nodeType":"YulIdentifier","src":"10631:9:2"}],"functionName":{"name":"sub","nativeSrc":"10621:3:2","nodeType":"YulIdentifier","src":"10621:3:2"},"nativeSrc":"10621:20:2","nodeType":"YulFunctionCall","src":"10621:20:2"}],"functionName":{"name":"mstore","nativeSrc":"10595:6:2","nodeType":"YulIdentifier","src":"10595:6:2"},"nativeSrc":"10595:47:2","nodeType":"YulFunctionCall","src":"10595:47:2"},"nativeSrc":"10595:47:2","nodeType":"YulExpressionStatement","src":"10595:47:2"},{"nativeSrc":"10651:139:2","nodeType":"YulAssignment","src":"10651:139:2","value":{"arguments":[{"name":"tail","nativeSrc":"10785:4:2","nodeType":"YulIdentifier","src":"10785:4:2"}],"functionName":{"name":"abi_encode_t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8_to_t_string_memory_ptr_fromStack","nativeSrc":"10659:124:2","nodeType":"YulIdentifier","src":"10659:124:2"},"nativeSrc":"10659:131:2","nodeType":"YulFunctionCall","src":"10659:131:2"},"variableNames":[{"name":"tail","nativeSrc":"10651:4:2","nodeType":"YulIdentifier","src":"10651:4:2"}]}]},"name":"abi_encode_tuple_t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"10378:419:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10529:9:2","nodeType":"YulTypedName","src":"10529:9:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10544:4:2","nodeType":"YulTypedName","src":"10544:4:2","type":""}],"src":"10378:419:2"},{"body":{"nativeSrc":"10909:68:2","nodeType":"YulBlock","src":"10909:68:2","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"10931:6:2","nodeType":"YulIdentifier","src":"10931:6:2"},{"kind":"number","nativeSrc":"10939:1:2","nodeType":"YulLiteral","src":"10939:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"10927:3:2","nodeType":"YulIdentifier","src":"10927:3:2"},"nativeSrc":"10927:14:2","nodeType":"YulFunctionCall","src":"10927:14:2"},{"hexValue":"4f6e6c79206f776e65722063616e20616464206865697273","kind":"string","nativeSrc":"10943:26:2","nodeType":"YulLiteral","src":"10943:26:2","type":"","value":"Only owner can add heirs"}],"functionName":{"name":"mstore","nativeSrc":"10920:6:2","nodeType":"YulIdentifier","src":"10920:6:2"},"nativeSrc":"10920:50:2","nodeType":"YulFunctionCall","src":"10920:50:2"},"nativeSrc":"10920:50:2","nodeType":"YulExpressionStatement","src":"10920:50:2"}]},"name":"store_literal_in_memory_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c","nativeSrc":"10803:174:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"10901:6:2","nodeType":"YulTypedName","src":"10901:6:2","type":""}],"src":"10803:174:2"},{"body":{"nativeSrc":"11129:220:2","nodeType":"YulBlock","src":"11129:220:2","statements":[{"nativeSrc":"11139:74:2","nodeType":"YulAssignment","src":"11139:74:2","value":{"arguments":[{"name":"pos","nativeSrc":"11205:3:2","nodeType":"YulIdentifier","src":"11205:3:2"},{"kind":"number","nativeSrc":"11210:2:2","nodeType":"YulLiteral","src":"11210:2:2","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"11146:58:2","nodeType":"YulIdentifier","src":"11146:58:2"},"nativeSrc":"11146:67:2","nodeType":"YulFunctionCall","src":"11146:67:2"},"variableNames":[{"name":"pos","nativeSrc":"11139:3:2","nodeType":"YulIdentifier","src":"11139:3:2"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"11311:3:2","nodeType":"YulIdentifier","src":"11311:3:2"}],"functionName":{"name":"store_literal_in_memory_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c","nativeSrc":"11222:88:2","nodeType":"YulIdentifier","src":"11222:88:2"},"nativeSrc":"11222:93:2","nodeType":"YulFunctionCall","src":"11222:93:2"},"nativeSrc":"11222:93:2","nodeType":"YulExpressionStatement","src":"11222:93:2"},{"nativeSrc":"11324:19:2","nodeType":"YulAssignment","src":"11324:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"11335:3:2","nodeType":"YulIdentifier","src":"11335:3:2"},{"kind":"number","nativeSrc":"11340:2:2","nodeType":"YulLiteral","src":"11340:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11331:3:2","nodeType":"YulIdentifier","src":"11331:3:2"},"nativeSrc":"11331:12:2","nodeType":"YulFunctionCall","src":"11331:12:2"},"variableNames":[{"name":"end","nativeSrc":"11324:3:2","nodeType":"YulIdentifier","src":"11324:3:2"}]}]},"name":"abi_encode_t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c_to_t_string_memory_ptr_fromStack","nativeSrc":"10983:366:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"11117:3:2","nodeType":"YulTypedName","src":"11117:3:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"11125:3:2","nodeType":"YulTypedName","src":"11125:3:2","type":""}],"src":"10983:366:2"},{"body":{"nativeSrc":"11526:248:2","nodeType":"YulBlock","src":"11526:248:2","statements":[{"nativeSrc":"11536:26:2","nodeType":"YulAssignment","src":"11536:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"11548:9:2","nodeType":"YulIdentifier","src":"11548:9:2"},{"kind":"number","nativeSrc":"11559:2:2","nodeType":"YulLiteral","src":"11559:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11544:3:2","nodeType":"YulIdentifier","src":"11544:3:2"},"nativeSrc":"11544:18:2","nodeType":"YulFunctionCall","src":"11544:18:2"},"variableNames":[{"name":"tail","nativeSrc":"11536:4:2","nodeType":"YulIdentifier","src":"11536:4:2"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11583:9:2","nodeType":"YulIdentifier","src":"11583:9:2"},{"kind":"number","nativeSrc":"11594:1:2","nodeType":"YulLiteral","src":"11594:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"11579:3:2","nodeType":"YulIdentifier","src":"11579:3:2"},"nativeSrc":"11579:17:2","nodeType":"YulFunctionCall","src":"11579:17:2"},{"arguments":[{"name":"tail","nativeSrc":"11602:4:2","nodeType":"YulIdentifier","src":"11602:4:2"},{"name":"headStart","nativeSrc":"11608:9:2","nodeType":"YulIdentifier","src":"11608:9:2"}],"functionName":{"name":"sub","nativeSrc":"11598:3:2","nodeType":"YulIdentifier","src":"11598:3:2"},"nativeSrc":"11598:20:2","nodeType":"YulFunctionCall","src":"11598:20:2"}],"functionName":{"name":"mstore","nativeSrc":"11572:6:2","nodeType":"YulIdentifier","src":"11572:6:2"},"nativeSrc":"11572:47:2","nodeType":"YulFunctionCall","src":"11572:47:2"},"nativeSrc":"11572:47:2","nodeType":"YulExpressionStatement","src":"11572:47:2"},{"nativeSrc":"11628:139:2","nodeType":"YulAssignment","src":"11628:139:2","value":{"arguments":[{"name":"tail","nativeSrc":"11762:4:2","nodeType":"YulIdentifier","src":"11762:4:2"}],"functionName":{"name":"abi_encode_t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c_to_t_string_memory_ptr_fromStack","nativeSrc":"11636:124:2","nodeType":"YulIdentifier","src":"11636:124:2"},"nativeSrc":"11636:131:2","nodeType":"YulFunctionCall","src":"11636:131:2"},"variableNames":[{"name":"tail","nativeSrc":"11628:4:2","nodeType":"YulIdentifier","src":"11628:4:2"}]}]},"name":"abi_encode_tuple_t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"11355:419:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11506:9:2","nodeType":"YulTypedName","src":"11506:9:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11521:4:2","nodeType":"YulTypedName","src":"11521:4:2","type":""}],"src":"11355:419:2"},{"body":{"nativeSrc":"11808:152:2","nodeType":"YulBlock","src":"11808:152:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11825:1:2","nodeType":"YulLiteral","src":"11825:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"11828:77:2","nodeType":"YulLiteral","src":"11828:77:2","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"11818:6:2","nodeType":"YulIdentifier","src":"11818:6:2"},"nativeSrc":"11818:88:2","nodeType":"YulFunctionCall","src":"11818:88:2"},"nativeSrc":"11818:88:2","nodeType":"YulExpressionStatement","src":"11818:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11922:1:2","nodeType":"YulLiteral","src":"11922:1:2","type":"","value":"4"},{"kind":"number","nativeSrc":"11925:4:2","nodeType":"YulLiteral","src":"11925:4:2","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"11915:6:2","nodeType":"YulIdentifier","src":"11915:6:2"},"nativeSrc":"11915:15:2","nodeType":"YulFunctionCall","src":"11915:15:2"},"nativeSrc":"11915:15:2","nodeType":"YulExpressionStatement","src":"11915:15:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11946:1:2","nodeType":"YulLiteral","src":"11946:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"11949:4:2","nodeType":"YulLiteral","src":"11949:4:2","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11939:6:2","nodeType":"YulIdentifier","src":"11939:6:2"},"nativeSrc":"11939:15:2","nodeType":"YulFunctionCall","src":"11939:15:2"},"nativeSrc":"11939:15:2","nodeType":"YulExpressionStatement","src":"11939:15:2"}]},"name":"panic_error_0x22","nativeSrc":"11780:180:2","nodeType":"YulFunctionDefinition","src":"11780:180:2"},{"body":{"nativeSrc":"12017:269:2","nodeType":"YulBlock","src":"12017:269:2","statements":[{"nativeSrc":"12027:22:2","nodeType":"YulAssignment","src":"12027:22:2","value":{"arguments":[{"name":"data","nativeSrc":"12041:4:2","nodeType":"YulIdentifier","src":"12041:4:2"},{"kind":"number","nativeSrc":"12047:1:2","nodeType":"YulLiteral","src":"12047:1:2","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"12037:3:2","nodeType":"YulIdentifier","src":"12037:3:2"},"nativeSrc":"12037:12:2","nodeType":"YulFunctionCall","src":"12037:12:2"},"variableNames":[{"name":"length","nativeSrc":"12027:6:2","nodeType":"YulIdentifier","src":"12027:6:2"}]},{"nativeSrc":"12058:38:2","nodeType":"YulVariableDeclaration","src":"12058:38:2","value":{"arguments":[{"name":"data","nativeSrc":"12088:4:2","nodeType":"YulIdentifier","src":"12088:4:2"},{"kind":"number","nativeSrc":"12094:1:2","nodeType":"YulLiteral","src":"12094:1:2","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"12084:3:2","nodeType":"YulIdentifier","src":"12084:3:2"},"nativeSrc":"12084:12:2","nodeType":"YulFunctionCall","src":"12084:12:2"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"12062:18:2","nodeType":"YulTypedName","src":"12062:18:2","type":""}]},{"body":{"nativeSrc":"12135:51:2","nodeType":"YulBlock","src":"12135:51:2","statements":[{"nativeSrc":"12149:27:2","nodeType":"YulAssignment","src":"12149:27:2","value":{"arguments":[{"name":"length","nativeSrc":"12163:6:2","nodeType":"YulIdentifier","src":"12163:6:2"},{"kind":"number","nativeSrc":"12171:4:2","nodeType":"YulLiteral","src":"12171:4:2","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"12159:3:2","nodeType":"YulIdentifier","src":"12159:3:2"},"nativeSrc":"12159:17:2","nodeType":"YulFunctionCall","src":"12159:17:2"},"variableNames":[{"name":"length","nativeSrc":"12149:6:2","nodeType":"YulIdentifier","src":"12149:6:2"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"12115:18:2","nodeType":"YulIdentifier","src":"12115:18:2"}],"functionName":{"name":"iszero","nativeSrc":"12108:6:2","nodeType":"YulIdentifier","src":"12108:6:2"},"nativeSrc":"12108:26:2","nodeType":"YulFunctionCall","src":"12108:26:2"},"nativeSrc":"12105:81:2","nodeType":"YulIf","src":"12105:81:2"},{"body":{"nativeSrc":"12238:42:2","nodeType":"YulBlock","src":"12238:42:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nativeSrc":"12252:16:2","nodeType":"YulIdentifier","src":"12252:16:2"},"nativeSrc":"12252:18:2","nodeType":"YulFunctionCall","src":"12252:18:2"},"nativeSrc":"12252:18:2","nodeType":"YulExpressionStatement","src":"12252:18:2"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"12202:18:2","nodeType":"YulIdentifier","src":"12202:18:2"},{"arguments":[{"name":"length","nativeSrc":"12225:6:2","nodeType":"YulIdentifier","src":"12225:6:2"},{"kind":"number","nativeSrc":"12233:2:2","nodeType":"YulLiteral","src":"12233:2:2","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"12222:2:2","nodeType":"YulIdentifier","src":"12222:2:2"},"nativeSrc":"12222:14:2","nodeType":"YulFunctionCall","src":"12222:14:2"}],"functionName":{"name":"eq","nativeSrc":"12199:2:2","nodeType":"YulIdentifier","src":"12199:2:2"},"nativeSrc":"12199:38:2","nodeType":"YulFunctionCall","src":"12199:38:2"},"nativeSrc":"12196:84:2","nodeType":"YulIf","src":"12196:84:2"}]},"name":"extract_byte_array_length","nativeSrc":"11966:320:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"12001:4:2","nodeType":"YulTypedName","src":"12001:4:2","type":""}],"returnVariables":[{"name":"length","nativeSrc":"12010:6:2","nodeType":"YulTypedName","src":"12010:6:2","type":""}],"src":"11966:320:2"},{"body":{"nativeSrc":"12346:87:2","nodeType":"YulBlock","src":"12346:87:2","statements":[{"nativeSrc":"12356:11:2","nodeType":"YulAssignment","src":"12356:11:2","value":{"name":"ptr","nativeSrc":"12364:3:2","nodeType":"YulIdentifier","src":"12364:3:2"},"variableNames":[{"name":"data","nativeSrc":"12356:4:2","nodeType":"YulIdentifier","src":"12356:4:2"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12384:1:2","nodeType":"YulLiteral","src":"12384:1:2","type":"","value":"0"},{"name":"ptr","nativeSrc":"12387:3:2","nodeType":"YulIdentifier","src":"12387:3:2"}],"functionName":{"name":"mstore","nativeSrc":"12377:6:2","nodeType":"YulIdentifier","src":"12377:6:2"},"nativeSrc":"12377:14:2","nodeType":"YulFunctionCall","src":"12377:14:2"},"nativeSrc":"12377:14:2","nodeType":"YulExpressionStatement","src":"12377:14:2"},{"nativeSrc":"12400:26:2","nodeType":"YulAssignment","src":"12400:26:2","value":{"arguments":[{"kind":"number","nativeSrc":"12418:1:2","nodeType":"YulLiteral","src":"12418:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"12421:4:2","nodeType":"YulLiteral","src":"12421:4:2","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"12408:9:2","nodeType":"YulIdentifier","src":"12408:9:2"},"nativeSrc":"12408:18:2","nodeType":"YulFunctionCall","src":"12408:18:2"},"variableNames":[{"name":"data","nativeSrc":"12400:4:2","nodeType":"YulIdentifier","src":"12400:4:2"}]}]},"name":"array_dataslot_t_string_storage","nativeSrc":"12292:141:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"12333:3:2","nodeType":"YulTypedName","src":"12333:3:2","type":""}],"returnVariables":[{"name":"data","nativeSrc":"12341:4:2","nodeType":"YulTypedName","src":"12341:4:2","type":""}],"src":"12292:141:2"},{"body":{"nativeSrc":"12483:49:2","nodeType":"YulBlock","src":"12483:49:2","statements":[{"nativeSrc":"12493:33:2","nodeType":"YulAssignment","src":"12493:33:2","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"12511:5:2","nodeType":"YulIdentifier","src":"12511:5:2"},{"kind":"number","nativeSrc":"12518:2:2","nodeType":"YulLiteral","src":"12518:2:2","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"12507:3:2","nodeType":"YulIdentifier","src":"12507:3:2"},"nativeSrc":"12507:14:2","nodeType":"YulFunctionCall","src":"12507:14:2"},{"kind":"number","nativeSrc":"12523:2:2","nodeType":"YulLiteral","src":"12523:2:2","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"12503:3:2","nodeType":"YulIdentifier","src":"12503:3:2"},"nativeSrc":"12503:23:2","nodeType":"YulFunctionCall","src":"12503:23:2"},"variableNames":[{"name":"result","nativeSrc":"12493:6:2","nodeType":"YulIdentifier","src":"12493:6:2"}]}]},"name":"divide_by_32_ceil","nativeSrc":"12439:93:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12466:5:2","nodeType":"YulTypedName","src":"12466:5:2","type":""}],"returnVariables":[{"name":"result","nativeSrc":"12476:6:2","nodeType":"YulTypedName","src":"12476:6:2","type":""}],"src":"12439:93:2"},{"body":{"nativeSrc":"12591:54:2","nodeType":"YulBlock","src":"12591:54:2","statements":[{"nativeSrc":"12601:37:2","nodeType":"YulAssignment","src":"12601:37:2","value":{"arguments":[{"name":"bits","nativeSrc":"12626:4:2","nodeType":"YulIdentifier","src":"12626:4:2"},{"name":"value","nativeSrc":"12632:5:2","nodeType":"YulIdentifier","src":"12632:5:2"}],"functionName":{"name":"shl","nativeSrc":"12622:3:2","nodeType":"YulIdentifier","src":"12622:3:2"},"nativeSrc":"12622:16:2","nodeType":"YulFunctionCall","src":"12622:16:2"},"variableNames":[{"name":"newValue","nativeSrc":"12601:8:2","nodeType":"YulIdentifier","src":"12601:8:2"}]}]},"name":"shift_left_dynamic","nativeSrc":"12538:107:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nativeSrc":"12566:4:2","nodeType":"YulTypedName","src":"12566:4:2","type":""},{"name":"value","nativeSrc":"12572:5:2","nodeType":"YulTypedName","src":"12572:5:2","type":""}],"returnVariables":[{"name":"newValue","nativeSrc":"12582:8:2","nodeType":"YulTypedName","src":"12582:8:2","type":""}],"src":"12538:107:2"},{"body":{"nativeSrc":"12727:317:2","nodeType":"YulBlock","src":"12727:317:2","statements":[{"nativeSrc":"12737:35:2","nodeType":"YulVariableDeclaration","src":"12737:35:2","value":{"arguments":[{"name":"shiftBytes","nativeSrc":"12758:10:2","nodeType":"YulIdentifier","src":"12758:10:2"},{"kind":"number","nativeSrc":"12770:1:2","nodeType":"YulLiteral","src":"12770:1:2","type":"","value":"8"}],"functionName":{"name":"mul","nativeSrc":"12754:3:2","nodeType":"YulIdentifier","src":"12754:3:2"},"nativeSrc":"12754:18:2","nodeType":"YulFunctionCall","src":"12754:18:2"},"variables":[{"name":"shiftBits","nativeSrc":"12741:9:2","nodeType":"YulTypedName","src":"12741:9:2","type":""}]},{"nativeSrc":"12781:109:2","nodeType":"YulVariableDeclaration","src":"12781:109:2","value":{"arguments":[{"name":"shiftBits","nativeSrc":"12812:9:2","nodeType":"YulIdentifier","src":"12812:9:2"},{"kind":"number","nativeSrc":"12823:66:2","nodeType":"YulLiteral","src":"12823:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nativeSrc":"12793:18:2","nodeType":"YulIdentifier","src":"12793:18:2"},"nativeSrc":"12793:97:2","nodeType":"YulFunctionCall","src":"12793:97:2"},"variables":[{"name":"mask","nativeSrc":"12785:4:2","nodeType":"YulTypedName","src":"12785:4:2","type":""}]},{"nativeSrc":"12899:51:2","nodeType":"YulAssignment","src":"12899:51:2","value":{"arguments":[{"name":"shiftBits","nativeSrc":"12930:9:2","nodeType":"YulIdentifier","src":"12930:9:2"},{"name":"toInsert","nativeSrc":"12941:8:2","nodeType":"YulIdentifier","src":"12941:8:2"}],"functionName":{"name":"shift_left_dynamic","nativeSrc":"12911:18:2","nodeType":"YulIdentifier","src":"12911:18:2"},"nativeSrc":"12911:39:2","nodeType":"YulFunctionCall","src":"12911:39:2"},"variableNames":[{"name":"toInsert","nativeSrc":"12899:8:2","nodeType":"YulIdentifier","src":"12899:8:2"}]},{"nativeSrc":"12959:30:2","nodeType":"YulAssignment","src":"12959:30:2","value":{"arguments":[{"name":"value","nativeSrc":"12972:5:2","nodeType":"YulIdentifier","src":"12972:5:2"},{"arguments":[{"name":"mask","nativeSrc":"12983:4:2","nodeType":"YulIdentifier","src":"12983:4:2"}],"functionName":{"name":"not","nativeSrc":"12979:3:2","nodeType":"YulIdentifier","src":"12979:3:2"},"nativeSrc":"12979:9:2","nodeType":"YulFunctionCall","src":"12979:9:2"}],"functionName":{"name":"and","nativeSrc":"12968:3:2","nodeType":"YulIdentifier","src":"12968:3:2"},"nativeSrc":"12968:21:2","nodeType":"YulFunctionCall","src":"12968:21:2"},"variableNames":[{"name":"value","nativeSrc":"12959:5:2","nodeType":"YulIdentifier","src":"12959:5:2"}]},{"nativeSrc":"12998:40:2","nodeType":"YulAssignment","src":"12998:40:2","value":{"arguments":[{"name":"value","nativeSrc":"13011:5:2","nodeType":"YulIdentifier","src":"13011:5:2"},{"arguments":[{"name":"toInsert","nativeSrc":"13022:8:2","nodeType":"YulIdentifier","src":"13022:8:2"},{"name":"mask","nativeSrc":"13032:4:2","nodeType":"YulIdentifier","src":"13032:4:2"}],"functionName":{"name":"and","nativeSrc":"13018:3:2","nodeType":"YulIdentifier","src":"13018:3:2"},"nativeSrc":"13018:19:2","nodeType":"YulFunctionCall","src":"13018:19:2"}],"functionName":{"name":"or","nativeSrc":"13008:2:2","nodeType":"YulIdentifier","src":"13008:2:2"},"nativeSrc":"13008:30:2","nodeType":"YulFunctionCall","src":"13008:30:2"},"variableNames":[{"name":"result","nativeSrc":"12998:6:2","nodeType":"YulIdentifier","src":"12998:6:2"}]}]},"name":"update_byte_slice_dynamic32","nativeSrc":"12651:393:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12688:5:2","nodeType":"YulTypedName","src":"12688:5:2","type":""},{"name":"shiftBytes","nativeSrc":"12695:10:2","nodeType":"YulTypedName","src":"12695:10:2","type":""},{"name":"toInsert","nativeSrc":"12707:8:2","nodeType":"YulTypedName","src":"12707:8:2","type":""}],"returnVariables":[{"name":"result","nativeSrc":"12720:6:2","nodeType":"YulTypedName","src":"12720:6:2","type":""}],"src":"12651:393:2"},{"body":{"nativeSrc":"13082:28:2","nodeType":"YulBlock","src":"13082:28:2","statements":[{"nativeSrc":"13092:12:2","nodeType":"YulAssignment","src":"13092:12:2","value":{"name":"value","nativeSrc":"13099:5:2","nodeType":"YulIdentifier","src":"13099:5:2"},"variableNames":[{"name":"ret","nativeSrc":"13092:3:2","nodeType":"YulIdentifier","src":"13092:3:2"}]}]},"name":"identity","nativeSrc":"13050:60:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"13068:5:2","nodeType":"YulTypedName","src":"13068:5:2","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"13078:3:2","nodeType":"YulTypedName","src":"13078:3:2","type":""}],"src":"13050:60:2"},{"body":{"nativeSrc":"13176:82:2","nodeType":"YulBlock","src":"13176:82:2","statements":[{"nativeSrc":"13186:66:2","nodeType":"YulAssignment","src":"13186:66:2","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13244:5:2","nodeType":"YulIdentifier","src":"13244:5:2"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"13226:17:2","nodeType":"YulIdentifier","src":"13226:17:2"},"nativeSrc":"13226:24:2","nodeType":"YulFunctionCall","src":"13226:24:2"}],"functionName":{"name":"identity","nativeSrc":"13217:8:2","nodeType":"YulIdentifier","src":"13217:8:2"},"nativeSrc":"13217:34:2","nodeType":"YulFunctionCall","src":"13217:34:2"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"13199:17:2","nodeType":"YulIdentifier","src":"13199:17:2"},"nativeSrc":"13199:53:2","nodeType":"YulFunctionCall","src":"13199:53:2"},"variableNames":[{"name":"converted","nativeSrc":"13186:9:2","nodeType":"YulIdentifier","src":"13186:9:2"}]}]},"name":"convert_t_uint256_to_t_uint256","nativeSrc":"13116:142:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"13156:5:2","nodeType":"YulTypedName","src":"13156:5:2","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"13166:9:2","nodeType":"YulTypedName","src":"13166:9:2","type":""}],"src":"13116:142:2"},{"body":{"nativeSrc":"13311:28:2","nodeType":"YulBlock","src":"13311:28:2","statements":[{"nativeSrc":"13321:12:2","nodeType":"YulAssignment","src":"13321:12:2","value":{"name":"value","nativeSrc":"13328:5:2","nodeType":"YulIdentifier","src":"13328:5:2"},"variableNames":[{"name":"ret","nativeSrc":"13321:3:2","nodeType":"YulIdentifier","src":"13321:3:2"}]}]},"name":"prepare_store_t_uint256","nativeSrc":"13264:75:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"13297:5:2","nodeType":"YulTypedName","src":"13297:5:2","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"13307:3:2","nodeType":"YulTypedName","src":"13307:3:2","type":""}],"src":"13264:75:2"},{"body":{"nativeSrc":"13421:193:2","nodeType":"YulBlock","src":"13421:193:2","statements":[{"nativeSrc":"13431:63:2","nodeType":"YulVariableDeclaration","src":"13431:63:2","value":{"arguments":[{"name":"value_0","nativeSrc":"13486:7:2","nodeType":"YulIdentifier","src":"13486:7:2"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nativeSrc":"13455:30:2","nodeType":"YulIdentifier","src":"13455:30:2"},"nativeSrc":"13455:39:2","nodeType":"YulFunctionCall","src":"13455:39:2"},"variables":[{"name":"convertedValue_0","nativeSrc":"13435:16:2","nodeType":"YulTypedName","src":"13435:16:2","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"13510:4:2","nodeType":"YulIdentifier","src":"13510:4:2"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"13550:4:2","nodeType":"YulIdentifier","src":"13550:4:2"}],"functionName":{"name":"sload","nativeSrc":"13544:5:2","nodeType":"YulIdentifier","src":"13544:5:2"},"nativeSrc":"13544:11:2","nodeType":"YulFunctionCall","src":"13544:11:2"},{"name":"offset","nativeSrc":"13557:6:2","nodeType":"YulIdentifier","src":"13557:6:2"},{"arguments":[{"name":"convertedValue_0","nativeSrc":"13589:16:2","nodeType":"YulIdentifier","src":"13589:16:2"}],"functionName":{"name":"prepare_store_t_uint256","nativeSrc":"13565:23:2","nodeType":"YulIdentifier","src":"13565:23:2"},"nativeSrc":"13565:41:2","nodeType":"YulFunctionCall","src":"13565:41:2"}],"functionName":{"name":"update_byte_slice_dynamic32","nativeSrc":"13516:27:2","nodeType":"YulIdentifier","src":"13516:27:2"},"nativeSrc":"13516:91:2","nodeType":"YulFunctionCall","src":"13516:91:2"}],"functionName":{"name":"sstore","nativeSrc":"13503:6:2","nodeType":"YulIdentifier","src":"13503:6:2"},"nativeSrc":"13503:105:2","nodeType":"YulFunctionCall","src":"13503:105:2"},"nativeSrc":"13503:105:2","nodeType":"YulExpressionStatement","src":"13503:105:2"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nativeSrc":"13345:269:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"13398:4:2","nodeType":"YulTypedName","src":"13398:4:2","type":""},{"name":"offset","nativeSrc":"13404:6:2","nodeType":"YulTypedName","src":"13404:6:2","type":""},{"name":"value_0","nativeSrc":"13412:7:2","nodeType":"YulTypedName","src":"13412:7:2","type":""}],"src":"13345:269:2"},{"body":{"nativeSrc":"13669:24:2","nodeType":"YulBlock","src":"13669:24:2","statements":[{"nativeSrc":"13679:8:2","nodeType":"YulAssignment","src":"13679:8:2","value":{"kind":"number","nativeSrc":"13686:1:2","nodeType":"YulLiteral","src":"13686:1:2","type":"","value":"0"},"variableNames":[{"name":"ret","nativeSrc":"13679:3:2","nodeType":"YulIdentifier","src":"13679:3:2"}]}]},"name":"zero_value_for_split_t_uint256","nativeSrc":"13620:73:2","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nativeSrc":"13665:3:2","nodeType":"YulTypedName","src":"13665:3:2","type":""}],"src":"13620:73:2"},{"body":{"nativeSrc":"13752:136:2","nodeType":"YulBlock","src":"13752:136:2","statements":[{"nativeSrc":"13762:46:2","nodeType":"YulVariableDeclaration","src":"13762:46:2","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nativeSrc":"13776:30:2","nodeType":"YulIdentifier","src":"13776:30:2"},"nativeSrc":"13776:32:2","nodeType":"YulFunctionCall","src":"13776:32:2"},"variables":[{"name":"zero_0","nativeSrc":"13766:6:2","nodeType":"YulTypedName","src":"13766:6:2","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"13861:4:2","nodeType":"YulIdentifier","src":"13861:4:2"},{"name":"offset","nativeSrc":"13867:6:2","nodeType":"YulIdentifier","src":"13867:6:2"},{"name":"zero_0","nativeSrc":"13875:6:2","nodeType":"YulIdentifier","src":"13875:6:2"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nativeSrc":"13817:43:2","nodeType":"YulIdentifier","src":"13817:43:2"},"nativeSrc":"13817:65:2","nodeType":"YulFunctionCall","src":"13817:65:2"},"nativeSrc":"13817:65:2","nodeType":"YulExpressionStatement","src":"13817:65:2"}]},"name":"storage_set_to_zero_t_uint256","nativeSrc":"13699:189:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"13738:4:2","nodeType":"YulTypedName","src":"13738:4:2","type":""},{"name":"offset","nativeSrc":"13744:6:2","nodeType":"YulTypedName","src":"13744:6:2","type":""}],"src":"13699:189:2"},{"body":{"nativeSrc":"13944:136:2","nodeType":"YulBlock","src":"13944:136:2","statements":[{"body":{"nativeSrc":"14011:63:2","nodeType":"YulBlock","src":"14011:63:2","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"14055:5:2","nodeType":"YulIdentifier","src":"14055:5:2"},{"kind":"number","nativeSrc":"14062:1:2","nodeType":"YulLiteral","src":"14062:1:2","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nativeSrc":"14025:29:2","nodeType":"YulIdentifier","src":"14025:29:2"},"nativeSrc":"14025:39:2","nodeType":"YulFunctionCall","src":"14025:39:2"},"nativeSrc":"14025:39:2","nodeType":"YulExpressionStatement","src":"14025:39:2"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"13964:5:2","nodeType":"YulIdentifier","src":"13964:5:2"},{"name":"end","nativeSrc":"13971:3:2","nodeType":"YulIdentifier","src":"13971:3:2"}],"functionName":{"name":"lt","nativeSrc":"13961:2:2","nodeType":"YulIdentifier","src":"13961:2:2"},"nativeSrc":"13961:14:2","nodeType":"YulFunctionCall","src":"13961:14:2"},"nativeSrc":"13954:120:2","nodeType":"YulForLoop","post":{"nativeSrc":"13976:26:2","nodeType":"YulBlock","src":"13976:26:2","statements":[{"nativeSrc":"13978:22:2","nodeType":"YulAssignment","src":"13978:22:2","value":{"arguments":[{"name":"start","nativeSrc":"13991:5:2","nodeType":"YulIdentifier","src":"13991:5:2"},{"kind":"number","nativeSrc":"13998:1:2","nodeType":"YulLiteral","src":"13998:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13987:3:2","nodeType":"YulIdentifier","src":"13987:3:2"},"nativeSrc":"13987:13:2","nodeType":"YulFunctionCall","src":"13987:13:2"},"variableNames":[{"name":"start","nativeSrc":"13978:5:2","nodeType":"YulIdentifier","src":"13978:5:2"}]}]},"pre":{"nativeSrc":"13958:2:2","nodeType":"YulBlock","src":"13958:2:2","statements":[]},"src":"13954:120:2"}]},"name":"clear_storage_range_t_bytes1","nativeSrc":"13894:186:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"13932:5:2","nodeType":"YulTypedName","src":"13932:5:2","type":""},{"name":"end","nativeSrc":"13939:3:2","nodeType":"YulTypedName","src":"13939:3:2","type":""}],"src":"13894:186:2"},{"body":{"nativeSrc":"14165:464:2","nodeType":"YulBlock","src":"14165:464:2","statements":[{"body":{"nativeSrc":"14191:431:2","nodeType":"YulBlock","src":"14191:431:2","statements":[{"nativeSrc":"14205:54:2","nodeType":"YulVariableDeclaration","src":"14205:54:2","value":{"arguments":[{"name":"array","nativeSrc":"14253:5:2","nodeType":"YulIdentifier","src":"14253:5:2"}],"functionName":{"name":"array_dataslot_t_string_storage","nativeSrc":"14221:31:2","nodeType":"YulIdentifier","src":"14221:31:2"},"nativeSrc":"14221:38:2","nodeType":"YulFunctionCall","src":"14221:38:2"},"variables":[{"name":"dataArea","nativeSrc":"14209:8:2","nodeType":"YulTypedName","src":"14209:8:2","type":""}]},{"nativeSrc":"14272:63:2","nodeType":"YulVariableDeclaration","src":"14272:63:2","value":{"arguments":[{"name":"dataArea","nativeSrc":"14295:8:2","nodeType":"YulIdentifier","src":"14295:8:2"},{"arguments":[{"name":"startIndex","nativeSrc":"14323:10:2","nodeType":"YulIdentifier","src":"14323:10:2"}],"functionName":{"name":"divide_by_32_ceil","nativeSrc":"14305:17:2","nodeType":"YulIdentifier","src":"14305:17:2"},"nativeSrc":"14305:29:2","nodeType":"YulFunctionCall","src":"14305:29:2"}],"functionName":{"name":"add","nativeSrc":"14291:3:2","nodeType":"YulIdentifier","src":"14291:3:2"},"nativeSrc":"14291:44:2","nodeType":"YulFunctionCall","src":"14291:44:2"},"variables":[{"name":"deleteStart","nativeSrc":"14276:11:2","nodeType":"YulTypedName","src":"14276:11:2","type":""}]},{"body":{"nativeSrc":"14492:27:2","nodeType":"YulBlock","src":"14492:27:2","statements":[{"nativeSrc":"14494:23:2","nodeType":"YulAssignment","src":"14494:23:2","value":{"name":"dataArea","nativeSrc":"14509:8:2","nodeType":"YulIdentifier","src":"14509:8:2"},"variableNames":[{"name":"deleteStart","nativeSrc":"14494:11:2","nodeType":"YulIdentifier","src":"14494:11:2"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"14476:10:2","nodeType":"YulIdentifier","src":"14476:10:2"},{"kind":"number","nativeSrc":"14488:2:2","nodeType":"YulLiteral","src":"14488:2:2","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"14473:2:2","nodeType":"YulIdentifier","src":"14473:2:2"},"nativeSrc":"14473:18:2","nodeType":"YulFunctionCall","src":"14473:18:2"},"nativeSrc":"14470:49:2","nodeType":"YulIf","src":"14470:49:2"},{"expression":{"arguments":[{"name":"deleteStart","nativeSrc":"14561:11:2","nodeType":"YulIdentifier","src":"14561:11:2"},{"arguments":[{"name":"dataArea","nativeSrc":"14578:8:2","nodeType":"YulIdentifier","src":"14578:8:2"},{"arguments":[{"name":"len","nativeSrc":"14606:3:2","nodeType":"YulIdentifier","src":"14606:3:2"}],"functionName":{"name":"divide_by_32_ceil","nativeSrc":"14588:17:2","nodeType":"YulIdentifier","src":"14588:17:2"},"nativeSrc":"14588:22:2","nodeType":"YulFunctionCall","src":"14588:22:2"}],"functionName":{"name":"add","nativeSrc":"14574:3:2","nodeType":"YulIdentifier","src":"14574:3:2"},"nativeSrc":"14574:37:2","nodeType":"YulFunctionCall","src":"14574:37:2"}],"functionName":{"name":"clear_storage_range_t_bytes1","nativeSrc":"14532:28:2","nodeType":"YulIdentifier","src":"14532:28:2"},"nativeSrc":"14532:80:2","nodeType":"YulFunctionCall","src":"14532:80:2"},"nativeSrc":"14532:80:2","nodeType":"YulExpressionStatement","src":"14532:80:2"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"14182:3:2","nodeType":"YulIdentifier","src":"14182:3:2"},{"kind":"number","nativeSrc":"14187:2:2","nodeType":"YulLiteral","src":"14187:2:2","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"14179:2:2","nodeType":"YulIdentifier","src":"14179:2:2"},"nativeSrc":"14179:11:2","nodeType":"YulFunctionCall","src":"14179:11:2"},"nativeSrc":"14176:446:2","nodeType":"YulIf","src":"14176:446:2"}]},"name":"clean_up_bytearray_end_slots_t_string_storage","nativeSrc":"14086:543:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"14141:5:2","nodeType":"YulTypedName","src":"14141:5:2","type":""},{"name":"len","nativeSrc":"14148:3:2","nodeType":"YulTypedName","src":"14148:3:2","type":""},{"name":"startIndex","nativeSrc":"14153:10:2","nodeType":"YulTypedName","src":"14153:10:2","type":""}],"src":"14086:543:2"},{"body":{"nativeSrc":"14698:54:2","nodeType":"YulBlock","src":"14698:54:2","statements":[{"nativeSrc":"14708:37:2","nodeType":"YulAssignment","src":"14708:37:2","value":{"arguments":[{"name":"bits","nativeSrc":"14733:4:2","nodeType":"YulIdentifier","src":"14733:4:2"},{"name":"value","nativeSrc":"14739:5:2","nodeType":"YulIdentifier","src":"14739:5:2"}],"functionName":{"name":"shr","nativeSrc":"14729:3:2","nodeType":"YulIdentifier","src":"14729:3:2"},"nativeSrc":"14729:16:2","nodeType":"YulFunctionCall","src":"14729:16:2"},"variableNames":[{"name":"newValue","nativeSrc":"14708:8:2","nodeType":"YulIdentifier","src":"14708:8:2"}]}]},"name":"shift_right_unsigned_dynamic","nativeSrc":"14635:117:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nativeSrc":"14673:4:2","nodeType":"YulTypedName","src":"14673:4:2","type":""},{"name":"value","nativeSrc":"14679:5:2","nodeType":"YulTypedName","src":"14679:5:2","type":""}],"returnVariables":[{"name":"newValue","nativeSrc":"14689:8:2","nodeType":"YulTypedName","src":"14689:8:2","type":""}],"src":"14635:117:2"},{"body":{"nativeSrc":"14809:118:2","nodeType":"YulBlock","src":"14809:118:2","statements":[{"nativeSrc":"14819:68:2","nodeType":"YulVariableDeclaration","src":"14819:68:2","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14868:1:2","nodeType":"YulLiteral","src":"14868:1:2","type":"","value":"8"},{"name":"bytes","nativeSrc":"14871:5:2","nodeType":"YulIdentifier","src":"14871:5:2"}],"functionName":{"name":"mul","nativeSrc":"14864:3:2","nodeType":"YulIdentifier","src":"14864:3:2"},"nativeSrc":"14864:13:2","nodeType":"YulFunctionCall","src":"14864:13:2"},{"arguments":[{"kind":"number","nativeSrc":"14883:1:2","nodeType":"YulLiteral","src":"14883:1:2","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"14879:3:2","nodeType":"YulIdentifier","src":"14879:3:2"},"nativeSrc":"14879:6:2","nodeType":"YulFunctionCall","src":"14879:6:2"}],"functionName":{"name":"shift_right_unsigned_dynamic","nativeSrc":"14835:28:2","nodeType":"YulIdentifier","src":"14835:28:2"},"nativeSrc":"14835:51:2","nodeType":"YulFunctionCall","src":"14835:51:2"}],"functionName":{"name":"not","nativeSrc":"14831:3:2","nodeType":"YulIdentifier","src":"14831:3:2"},"nativeSrc":"14831:56:2","nodeType":"YulFunctionCall","src":"14831:56:2"},"variables":[{"name":"mask","nativeSrc":"14823:4:2","nodeType":"YulTypedName","src":"14823:4:2","type":""}]},{"nativeSrc":"14896:25:2","nodeType":"YulAssignment","src":"14896:25:2","value":{"arguments":[{"name":"data","nativeSrc":"14910:4:2","nodeType":"YulIdentifier","src":"14910:4:2"},{"name":"mask","nativeSrc":"14916:4:2","nodeType":"YulIdentifier","src":"14916:4:2"}],"functionName":{"name":"and","nativeSrc":"14906:3:2","nodeType":"YulIdentifier","src":"14906:3:2"},"nativeSrc":"14906:15:2","nodeType":"YulFunctionCall","src":"14906:15:2"},"variableNames":[{"name":"result","nativeSrc":"14896:6:2","nodeType":"YulIdentifier","src":"14896:6:2"}]}]},"name":"mask_bytes_dynamic","nativeSrc":"14758:169:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"14786:4:2","nodeType":"YulTypedName","src":"14786:4:2","type":""},{"name":"bytes","nativeSrc":"14792:5:2","nodeType":"YulTypedName","src":"14792:5:2","type":""}],"returnVariables":[{"name":"result","nativeSrc":"14802:6:2","nodeType":"YulTypedName","src":"14802:6:2","type":""}],"src":"14758:169:2"},{"body":{"nativeSrc":"15013:214:2","nodeType":"YulBlock","src":"15013:214:2","statements":[{"nativeSrc":"15146:37:2","nodeType":"YulAssignment","src":"15146:37:2","value":{"arguments":[{"name":"data","nativeSrc":"15173:4:2","nodeType":"YulIdentifier","src":"15173:4:2"},{"name":"len","nativeSrc":"15179:3:2","nodeType":"YulIdentifier","src":"15179:3:2"}],"functionName":{"name":"mask_bytes_dynamic","nativeSrc":"15154:18:2","nodeType":"YulIdentifier","src":"15154:18:2"},"nativeSrc":"15154:29:2","nodeType":"YulFunctionCall","src":"15154:29:2"},"variableNames":[{"name":"data","nativeSrc":"15146:4:2","nodeType":"YulIdentifier","src":"15146:4:2"}]},{"nativeSrc":"15192:29:2","nodeType":"YulAssignment","src":"15192:29:2","value":{"arguments":[{"name":"data","nativeSrc":"15203:4:2","nodeType":"YulIdentifier","src":"15203:4:2"},{"arguments":[{"kind":"number","nativeSrc":"15213:1:2","nodeType":"YulLiteral","src":"15213:1:2","type":"","value":"2"},{"name":"len","nativeSrc":"15216:3:2","nodeType":"YulIdentifier","src":"15216:3:2"}],"functionName":{"name":"mul","nativeSrc":"15209:3:2","nodeType":"YulIdentifier","src":"15209:3:2"},"nativeSrc":"15209:11:2","nodeType":"YulFunctionCall","src":"15209:11:2"}],"functionName":{"name":"or","nativeSrc":"15200:2:2","nodeType":"YulIdentifier","src":"15200:2:2"},"nativeSrc":"15200:21:2","nodeType":"YulFunctionCall","src":"15200:21:2"},"variableNames":[{"name":"used","nativeSrc":"15192:4:2","nodeType":"YulIdentifier","src":"15192:4:2"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"14932:295:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"14994:4:2","nodeType":"YulTypedName","src":"14994:4:2","type":""},{"name":"len","nativeSrc":"15000:3:2","nodeType":"YulTypedName","src":"15000:3:2","type":""}],"returnVariables":[{"name":"used","nativeSrc":"15008:4:2","nodeType":"YulTypedName","src":"15008:4:2","type":""}],"src":"14932:295:2"},{"body":{"nativeSrc":"15324:1303:2","nodeType":"YulBlock","src":"15324:1303:2","statements":[{"nativeSrc":"15335:51:2","nodeType":"YulVariableDeclaration","src":"15335:51:2","value":{"arguments":[{"name":"src","nativeSrc":"15382:3:2","nodeType":"YulIdentifier","src":"15382:3:2"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"15349:32:2","nodeType":"YulIdentifier","src":"15349:32:2"},"nativeSrc":"15349:37:2","nodeType":"YulFunctionCall","src":"15349:37:2"},"variables":[{"name":"newLen","nativeSrc":"15339:6:2","nodeType":"YulTypedName","src":"15339:6:2","type":""}]},{"body":{"nativeSrc":"15471:22:2","nodeType":"YulBlock","src":"15471:22:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"15473:16:2","nodeType":"YulIdentifier","src":"15473:16:2"},"nativeSrc":"15473:18:2","nodeType":"YulFunctionCall","src":"15473:18:2"},"nativeSrc":"15473:18:2","nodeType":"YulExpressionStatement","src":"15473:18:2"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"15443:6:2","nodeType":"YulIdentifier","src":"15443:6:2"},{"kind":"number","nativeSrc":"15451:18:2","nodeType":"YulLiteral","src":"15451:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"15440:2:2","nodeType":"YulIdentifier","src":"15440:2:2"},"nativeSrc":"15440:30:2","nodeType":"YulFunctionCall","src":"15440:30:2"},"nativeSrc":"15437:56:2","nodeType":"YulIf","src":"15437:56:2"},{"nativeSrc":"15503:52:2","nodeType":"YulVariableDeclaration","src":"15503:52:2","value":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"15549:4:2","nodeType":"YulIdentifier","src":"15549:4:2"}],"functionName":{"name":"sload","nativeSrc":"15543:5:2","nodeType":"YulIdentifier","src":"15543:5:2"},"nativeSrc":"15543:11:2","nodeType":"YulFunctionCall","src":"15543:11:2"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"15517:25:2","nodeType":"YulIdentifier","src":"15517:25:2"},"nativeSrc":"15517:38:2","nodeType":"YulFunctionCall","src":"15517:38:2"},"variables":[{"name":"oldLen","nativeSrc":"15507:6:2","nodeType":"YulTypedName","src":"15507:6:2","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"15648:4:2","nodeType":"YulIdentifier","src":"15648:4:2"},{"name":"oldLen","nativeSrc":"15654:6:2","nodeType":"YulIdentifier","src":"15654:6:2"},{"name":"newLen","nativeSrc":"15662:6:2","nodeType":"YulIdentifier","src":"15662:6:2"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_string_storage","nativeSrc":"15602:45:2","nodeType":"YulIdentifier","src":"15602:45:2"},"nativeSrc":"15602:67:2","nodeType":"YulFunctionCall","src":"15602:67:2"},"nativeSrc":"15602:67:2","nodeType":"YulExpressionStatement","src":"15602:67:2"},{"nativeSrc":"15679:18:2","nodeType":"YulVariableDeclaration","src":"15679:18:2","value":{"kind":"number","nativeSrc":"15696:1:2","nodeType":"YulLiteral","src":"15696:1:2","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"15683:9:2","nodeType":"YulTypedName","src":"15683:9:2","type":""}]},{"nativeSrc":"15707:17:2","nodeType":"YulAssignment","src":"15707:17:2","value":{"kind":"number","nativeSrc":"15720:4:2","nodeType":"YulLiteral","src":"15720:4:2","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"15707:9:2","nodeType":"YulIdentifier","src":"15707:9:2"}]},{"cases":[{"body":{"nativeSrc":"15771:611:2","nodeType":"YulBlock","src":"15771:611:2","statements":[{"nativeSrc":"15785:37:2","nodeType":"YulVariableDeclaration","src":"15785:37:2","value":{"arguments":[{"name":"newLen","nativeSrc":"15804:6:2","nodeType":"YulIdentifier","src":"15804:6:2"},{"arguments":[{"kind":"number","nativeSrc":"15816:4:2","nodeType":"YulLiteral","src":"15816:4:2","type":"","value":"0x1f"}],"functionName":{"name":"not","nativeSrc":"15812:3:2","nodeType":"YulIdentifier","src":"15812:3:2"},"nativeSrc":"15812:9:2","nodeType":"YulFunctionCall","src":"15812:9:2"}],"functionName":{"name":"and","nativeSrc":"15800:3:2","nodeType":"YulIdentifier","src":"15800:3:2"},"nativeSrc":"15800:22:2","nodeType":"YulFunctionCall","src":"15800:22:2"},"variables":[{"name":"loopEnd","nativeSrc":"15789:7:2","nodeType":"YulTypedName","src":"15789:7:2","type":""}]},{"nativeSrc":"15836:51:2","nodeType":"YulVariableDeclaration","src":"15836:51:2","value":{"arguments":[{"name":"slot","nativeSrc":"15882:4:2","nodeType":"YulIdentifier","src":"15882:4:2"}],"functionName":{"name":"array_dataslot_t_string_storage","nativeSrc":"15850:31:2","nodeType":"YulIdentifier","src":"15850:31:2"},"nativeSrc":"15850:37:2","nodeType":"YulFunctionCall","src":"15850:37:2"},"variables":[{"name":"dstPtr","nativeSrc":"15840:6:2","nodeType":"YulTypedName","src":"15840:6:2","type":""}]},{"nativeSrc":"15900:10:2","nodeType":"YulVariableDeclaration","src":"15900:10:2","value":{"kind":"number","nativeSrc":"15909:1:2","nodeType":"YulLiteral","src":"15909:1:2","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"15904:1:2","nodeType":"YulTypedName","src":"15904:1:2","type":""}]},{"body":{"nativeSrc":"15968:163:2","nodeType":"YulBlock","src":"15968:163:2","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"15993:6:2","nodeType":"YulIdentifier","src":"15993:6:2"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"16011:3:2","nodeType":"YulIdentifier","src":"16011:3:2"},{"name":"srcOffset","nativeSrc":"16016:9:2","nodeType":"YulIdentifier","src":"16016:9:2"}],"functionName":{"name":"add","nativeSrc":"16007:3:2","nodeType":"YulIdentifier","src":"16007:3:2"},"nativeSrc":"16007:19:2","nodeType":"YulFunctionCall","src":"16007:19:2"}],"functionName":{"name":"mload","nativeSrc":"16001:5:2","nodeType":"YulIdentifier","src":"16001:5:2"},"nativeSrc":"16001:26:2","nodeType":"YulFunctionCall","src":"16001:26:2"}],"functionName":{"name":"sstore","nativeSrc":"15986:6:2","nodeType":"YulIdentifier","src":"15986:6:2"},"nativeSrc":"15986:42:2","nodeType":"YulFunctionCall","src":"15986:42:2"},"nativeSrc":"15986:42:2","nodeType":"YulExpressionStatement","src":"15986:42:2"},{"nativeSrc":"16045:24:2","nodeType":"YulAssignment","src":"16045:24:2","value":{"arguments":[{"name":"dstPtr","nativeSrc":"16059:6:2","nodeType":"YulIdentifier","src":"16059:6:2"},{"kind":"number","nativeSrc":"16067:1:2","nodeType":"YulLiteral","src":"16067:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"16055:3:2","nodeType":"YulIdentifier","src":"16055:3:2"},"nativeSrc":"16055:14:2","nodeType":"YulFunctionCall","src":"16055:14:2"},"variableNames":[{"name":"dstPtr","nativeSrc":"16045:6:2","nodeType":"YulIdentifier","src":"16045:6:2"}]},{"nativeSrc":"16086:31:2","nodeType":"YulAssignment","src":"16086:31:2","value":{"arguments":[{"name":"srcOffset","nativeSrc":"16103:9:2","nodeType":"YulIdentifier","src":"16103:9:2"},{"kind":"number","nativeSrc":"16114:2:2","nodeType":"YulLiteral","src":"16114:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16099:3:2","nodeType":"YulIdentifier","src":"16099:3:2"},"nativeSrc":"16099:18:2","nodeType":"YulFunctionCall","src":"16099:18:2"},"variableNames":[{"name":"srcOffset","nativeSrc":"16086:9:2","nodeType":"YulIdentifier","src":"16086:9:2"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"15934:1:2","nodeType":"YulIdentifier","src":"15934:1:2"},{"name":"loopEnd","nativeSrc":"15937:7:2","nodeType":"YulIdentifier","src":"15937:7:2"}],"functionName":{"name":"lt","nativeSrc":"15931:2:2","nodeType":"YulIdentifier","src":"15931:2:2"},"nativeSrc":"15931:14:2","nodeType":"YulFunctionCall","src":"15931:14:2"},"nativeSrc":"15923:208:2","nodeType":"YulForLoop","post":{"nativeSrc":"15946:21:2","nodeType":"YulBlock","src":"15946:21:2","statements":[{"nativeSrc":"15948:17:2","nodeType":"YulAssignment","src":"15948:17:2","value":{"arguments":[{"name":"i","nativeSrc":"15957:1:2","nodeType":"YulIdentifier","src":"15957:1:2"},{"kind":"number","nativeSrc":"15960:4:2","nodeType":"YulLiteral","src":"15960:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15953:3:2","nodeType":"YulIdentifier","src":"15953:3:2"},"nativeSrc":"15953:12:2","nodeType":"YulFunctionCall","src":"15953:12:2"},"variableNames":[{"name":"i","nativeSrc":"15948:1:2","nodeType":"YulIdentifier","src":"15948:1:2"}]}]},"pre":{"nativeSrc":"15927:3:2","nodeType":"YulBlock","src":"15927:3:2","statements":[]},"src":"15923:208:2"},{"body":{"nativeSrc":"16167:156:2","nodeType":"YulBlock","src":"16167:156:2","statements":[{"nativeSrc":"16185:43:2","nodeType":"YulVariableDeclaration","src":"16185:43:2","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"16212:3:2","nodeType":"YulIdentifier","src":"16212:3:2"},{"name":"srcOffset","nativeSrc":"16217:9:2","nodeType":"YulIdentifier","src":"16217:9:2"}],"functionName":{"name":"add","nativeSrc":"16208:3:2","nodeType":"YulIdentifier","src":"16208:3:2"},"nativeSrc":"16208:19:2","nodeType":"YulFunctionCall","src":"16208:19:2"}],"functionName":{"name":"mload","nativeSrc":"16202:5:2","nodeType":"YulIdentifier","src":"16202:5:2"},"nativeSrc":"16202:26:2","nodeType":"YulFunctionCall","src":"16202:26:2"},"variables":[{"name":"lastValue","nativeSrc":"16189:9:2","nodeType":"YulTypedName","src":"16189:9:2","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"16252:6:2","nodeType":"YulIdentifier","src":"16252:6:2"},{"arguments":[{"name":"lastValue","nativeSrc":"16279:9:2","nodeType":"YulIdentifier","src":"16279:9:2"},{"arguments":[{"name":"newLen","nativeSrc":"16294:6:2","nodeType":"YulIdentifier","src":"16294:6:2"},{"kind":"number","nativeSrc":"16302:4:2","nodeType":"YulLiteral","src":"16302:4:2","type":"","value":"0x1f"}],"functionName":{"name":"and","nativeSrc":"16290:3:2","nodeType":"YulIdentifier","src":"16290:3:2"},"nativeSrc":"16290:17:2","nodeType":"YulFunctionCall","src":"16290:17:2"}],"functionName":{"name":"mask_bytes_dynamic","nativeSrc":"16260:18:2","nodeType":"YulIdentifier","src":"16260:18:2"},"nativeSrc":"16260:48:2","nodeType":"YulFunctionCall","src":"16260:48:2"}],"functionName":{"name":"sstore","nativeSrc":"16245:6:2","nodeType":"YulIdentifier","src":"16245:6:2"},"nativeSrc":"16245:64:2","nodeType":"YulFunctionCall","src":"16245:64:2"},"nativeSrc":"16245:64:2","nodeType":"YulExpressionStatement","src":"16245:64:2"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"16150:7:2","nodeType":"YulIdentifier","src":"16150:7:2"},{"name":"newLen","nativeSrc":"16159:6:2","nodeType":"YulIdentifier","src":"16159:6:2"}],"functionName":{"name":"lt","nativeSrc":"16147:2:2","nodeType":"YulIdentifier","src":"16147:2:2"},"nativeSrc":"16147:19:2","nodeType":"YulFunctionCall","src":"16147:19:2"},"nativeSrc":"16144:179:2","nodeType":"YulIf","src":"16144:179:2"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"16343:4:2","nodeType":"YulIdentifier","src":"16343:4:2"},{"arguments":[{"arguments":[{"name":"newLen","nativeSrc":"16357:6:2","nodeType":"YulIdentifier","src":"16357:6:2"},{"kind":"number","nativeSrc":"16365:1:2","nodeType":"YulLiteral","src":"16365:1:2","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"16353:3:2","nodeType":"YulIdentifier","src":"16353:3:2"},"nativeSrc":"16353:14:2","nodeType":"YulFunctionCall","src":"16353:14:2"},{"kind":"number","nativeSrc":"16369:1:2","nodeType":"YulLiteral","src":"16369:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"16349:3:2","nodeType":"YulIdentifier","src":"16349:3:2"},"nativeSrc":"16349:22:2","nodeType":"YulFunctionCall","src":"16349:22:2"}],"functionName":{"name":"sstore","nativeSrc":"16336:6:2","nodeType":"YulIdentifier","src":"16336:6:2"},"nativeSrc":"16336:36:2","nodeType":"YulFunctionCall","src":"16336:36:2"},"nativeSrc":"16336:36:2","nodeType":"YulExpressionStatement","src":"16336:36:2"}]},"nativeSrc":"15764:618:2","nodeType":"YulCase","src":"15764:618:2","value":{"kind":"number","nativeSrc":"15769:1:2","nodeType":"YulLiteral","src":"15769:1:2","type":"","value":"1"}},{"body":{"nativeSrc":"16399:222:2","nodeType":"YulBlock","src":"16399:222:2","statements":[{"nativeSrc":"16413:14:2","nodeType":"YulVariableDeclaration","src":"16413:14:2","value":{"kind":"number","nativeSrc":"16426:1:2","nodeType":"YulLiteral","src":"16426:1:2","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"16417:5:2","nodeType":"YulTypedName","src":"16417:5:2","type":""}]},{"body":{"nativeSrc":"16450:67:2","nodeType":"YulBlock","src":"16450:67:2","statements":[{"nativeSrc":"16468:35:2","nodeType":"YulAssignment","src":"16468:35:2","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"16487:3:2","nodeType":"YulIdentifier","src":"16487:3:2"},{"name":"srcOffset","nativeSrc":"16492:9:2","nodeType":"YulIdentifier","src":"16492:9:2"}],"functionName":{"name":"add","nativeSrc":"16483:3:2","nodeType":"YulIdentifier","src":"16483:3:2"},"nativeSrc":"16483:19:2","nodeType":"YulFunctionCall","src":"16483:19:2"}],"functionName":{"name":"mload","nativeSrc":"16477:5:2","nodeType":"YulIdentifier","src":"16477:5:2"},"nativeSrc":"16477:26:2","nodeType":"YulFunctionCall","src":"16477:26:2"},"variableNames":[{"name":"value","nativeSrc":"16468:5:2","nodeType":"YulIdentifier","src":"16468:5:2"}]}]},"condition":{"name":"newLen","nativeSrc":"16443:6:2","nodeType":"YulIdentifier","src":"16443:6:2"},"nativeSrc":"16440:77:2","nodeType":"YulIf","src":"16440:77:2"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"16537:4:2","nodeType":"YulIdentifier","src":"16537:4:2"},{"arguments":[{"name":"value","nativeSrc":"16596:5:2","nodeType":"YulIdentifier","src":"16596:5:2"},{"name":"newLen","nativeSrc":"16603:6:2","nodeType":"YulIdentifier","src":"16603:6:2"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"16543:52:2","nodeType":"YulIdentifier","src":"16543:52:2"},"nativeSrc":"16543:67:2","nodeType":"YulFunctionCall","src":"16543:67:2"}],"functionName":{"name":"sstore","nativeSrc":"16530:6:2","nodeType":"YulIdentifier","src":"16530:6:2"},"nativeSrc":"16530:81:2","nodeType":"YulFunctionCall","src":"16530:81:2"},"nativeSrc":"16530:81:2","nodeType":"YulExpressionStatement","src":"16530:81:2"}]},"nativeSrc":"16391:230:2","nodeType":"YulCase","src":"16391:230:2","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"15744:6:2","nodeType":"YulIdentifier","src":"15744:6:2"},{"kind":"number","nativeSrc":"15752:2:2","nodeType":"YulLiteral","src":"15752:2:2","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"15741:2:2","nodeType":"YulIdentifier","src":"15741:2:2"},"nativeSrc":"15741:14:2","nodeType":"YulFunctionCall","src":"15741:14:2"},"nativeSrc":"15734:887:2","nodeType":"YulSwitch","src":"15734:887:2"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"15232:1395:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"15313:4:2","nodeType":"YulTypedName","src":"15313:4:2","type":""},{"name":"src","nativeSrc":"15319:3:2","nodeType":"YulTypedName","src":"15319:3:2","type":""}],"src":"15232:1395:2"},{"body":{"nativeSrc":"16739:67:2","nodeType":"YulBlock","src":"16739:67:2","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"16761:6:2","nodeType":"YulIdentifier","src":"16761:6:2"},{"kind":"number","nativeSrc":"16769:1:2","nodeType":"YulLiteral","src":"16769:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"16757:3:2","nodeType":"YulIdentifier","src":"16757:3:2"},"nativeSrc":"16757:14:2","nodeType":"YulFunctionCall","src":"16757:14:2"},{"hexValue":"54657374616d656e74206973206e6f7420616374697665","kind":"string","nativeSrc":"16773:25:2","nodeType":"YulLiteral","src":"16773:25:2","type":"","value":"Testament is not active"}],"functionName":{"name":"mstore","nativeSrc":"16750:6:2","nodeType":"YulIdentifier","src":"16750:6:2"},"nativeSrc":"16750:49:2","nodeType":"YulFunctionCall","src":"16750:49:2"},"nativeSrc":"16750:49:2","nodeType":"YulExpressionStatement","src":"16750:49:2"}]},"name":"store_literal_in_memory_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5","nativeSrc":"16633:173:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"16731:6:2","nodeType":"YulTypedName","src":"16731:6:2","type":""}],"src":"16633:173:2"},{"body":{"nativeSrc":"16958:220:2","nodeType":"YulBlock","src":"16958:220:2","statements":[{"nativeSrc":"16968:74:2","nodeType":"YulAssignment","src":"16968:74:2","value":{"arguments":[{"name":"pos","nativeSrc":"17034:3:2","nodeType":"YulIdentifier","src":"17034:3:2"},{"kind":"number","nativeSrc":"17039:2:2","nodeType":"YulLiteral","src":"17039:2:2","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"16975:58:2","nodeType":"YulIdentifier","src":"16975:58:2"},"nativeSrc":"16975:67:2","nodeType":"YulFunctionCall","src":"16975:67:2"},"variableNames":[{"name":"pos","nativeSrc":"16968:3:2","nodeType":"YulIdentifier","src":"16968:3:2"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"17140:3:2","nodeType":"YulIdentifier","src":"17140:3:2"}],"functionName":{"name":"store_literal_in_memory_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5","nativeSrc":"17051:88:2","nodeType":"YulIdentifier","src":"17051:88:2"},"nativeSrc":"17051:93:2","nodeType":"YulFunctionCall","src":"17051:93:2"},"nativeSrc":"17051:93:2","nodeType":"YulExpressionStatement","src":"17051:93:2"},{"nativeSrc":"17153:19:2","nodeType":"YulAssignment","src":"17153:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"17164:3:2","nodeType":"YulIdentifier","src":"17164:3:2"},{"kind":"number","nativeSrc":"17169:2:2","nodeType":"YulLiteral","src":"17169:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17160:3:2","nodeType":"YulIdentifier","src":"17160:3:2"},"nativeSrc":"17160:12:2","nodeType":"YulFunctionCall","src":"17160:12:2"},"variableNames":[{"name":"end","nativeSrc":"17153:3:2","nodeType":"YulIdentifier","src":"17153:3:2"}]}]},"name":"abi_encode_t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5_to_t_string_memory_ptr_fromStack","nativeSrc":"16812:366:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"16946:3:2","nodeType":"YulTypedName","src":"16946:3:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"16954:3:2","nodeType":"YulTypedName","src":"16954:3:2","type":""}],"src":"16812:366:2"},{"body":{"nativeSrc":"17355:248:2","nodeType":"YulBlock","src":"17355:248:2","statements":[{"nativeSrc":"17365:26:2","nodeType":"YulAssignment","src":"17365:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"17377:9:2","nodeType":"YulIdentifier","src":"17377:9:2"},{"kind":"number","nativeSrc":"17388:2:2","nodeType":"YulLiteral","src":"17388:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17373:3:2","nodeType":"YulIdentifier","src":"17373:3:2"},"nativeSrc":"17373:18:2","nodeType":"YulFunctionCall","src":"17373:18:2"},"variableNames":[{"name":"tail","nativeSrc":"17365:4:2","nodeType":"YulIdentifier","src":"17365:4:2"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17412:9:2","nodeType":"YulIdentifier","src":"17412:9:2"},{"kind":"number","nativeSrc":"17423:1:2","nodeType":"YulLiteral","src":"17423:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"17408:3:2","nodeType":"YulIdentifier","src":"17408:3:2"},"nativeSrc":"17408:17:2","nodeType":"YulFunctionCall","src":"17408:17:2"},{"arguments":[{"name":"tail","nativeSrc":"17431:4:2","nodeType":"YulIdentifier","src":"17431:4:2"},{"name":"headStart","nativeSrc":"17437:9:2","nodeType":"YulIdentifier","src":"17437:9:2"}],"functionName":{"name":"sub","nativeSrc":"17427:3:2","nodeType":"YulIdentifier","src":"17427:3:2"},"nativeSrc":"17427:20:2","nodeType":"YulFunctionCall","src":"17427:20:2"}],"functionName":{"name":"mstore","nativeSrc":"17401:6:2","nodeType":"YulIdentifier","src":"17401:6:2"},"nativeSrc":"17401:47:2","nodeType":"YulFunctionCall","src":"17401:47:2"},"nativeSrc":"17401:47:2","nodeType":"YulExpressionStatement","src":"17401:47:2"},{"nativeSrc":"17457:139:2","nodeType":"YulAssignment","src":"17457:139:2","value":{"arguments":[{"name":"tail","nativeSrc":"17591:4:2","nodeType":"YulIdentifier","src":"17591:4:2"}],"functionName":{"name":"abi_encode_t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5_to_t_string_memory_ptr_fromStack","nativeSrc":"17465:124:2","nodeType":"YulIdentifier","src":"17465:124:2"},"nativeSrc":"17465:131:2","nodeType":"YulFunctionCall","src":"17465:131:2"},"variableNames":[{"name":"tail","nativeSrc":"17457:4:2","nodeType":"YulIdentifier","src":"17457:4:2"}]}]},"name":"abi_encode_tuple_t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"17184:419:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17335:9:2","nodeType":"YulTypedName","src":"17335:9:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17350:4:2","nodeType":"YulTypedName","src":"17350:4:2","type":""}],"src":"17184:419:2"},{"body":{"nativeSrc":"17637:152:2","nodeType":"YulBlock","src":"17637:152:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17654:1:2","nodeType":"YulLiteral","src":"17654:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"17657:77:2","nodeType":"YulLiteral","src":"17657:77:2","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"17647:6:2","nodeType":"YulIdentifier","src":"17647:6:2"},"nativeSrc":"17647:88:2","nodeType":"YulFunctionCall","src":"17647:88:2"},"nativeSrc":"17647:88:2","nodeType":"YulExpressionStatement","src":"17647:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17751:1:2","nodeType":"YulLiteral","src":"17751:1:2","type":"","value":"4"},{"kind":"number","nativeSrc":"17754:4:2","nodeType":"YulLiteral","src":"17754:4:2","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"17744:6:2","nodeType":"YulIdentifier","src":"17744:6:2"},"nativeSrc":"17744:15:2","nodeType":"YulFunctionCall","src":"17744:15:2"},"nativeSrc":"17744:15:2","nodeType":"YulExpressionStatement","src":"17744:15:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17775:1:2","nodeType":"YulLiteral","src":"17775:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"17778:4:2","nodeType":"YulLiteral","src":"17778:4:2","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"17768:6:2","nodeType":"YulIdentifier","src":"17768:6:2"},"nativeSrc":"17768:15:2","nodeType":"YulFunctionCall","src":"17768:15:2"},"nativeSrc":"17768:15:2","nodeType":"YulExpressionStatement","src":"17768:15:2"}]},"name":"panic_error_0x32","nativeSrc":"17609:180:2","nodeType":"YulFunctionDefinition","src":"17609:180:2"},{"body":{"nativeSrc":"17893:124:2","nodeType":"YulBlock","src":"17893:124:2","statements":[{"nativeSrc":"17903:26:2","nodeType":"YulAssignment","src":"17903:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"17915:9:2","nodeType":"YulIdentifier","src":"17915:9:2"},{"kind":"number","nativeSrc":"17926:2:2","nodeType":"YulLiteral","src":"17926:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17911:3:2","nodeType":"YulIdentifier","src":"17911:3:2"},"nativeSrc":"17911:18:2","nodeType":"YulFunctionCall","src":"17911:18:2"},"variableNames":[{"name":"tail","nativeSrc":"17903:4:2","nodeType":"YulIdentifier","src":"17903:4:2"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"17983:6:2","nodeType":"YulIdentifier","src":"17983:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"17996:9:2","nodeType":"YulIdentifier","src":"17996:9:2"},{"kind":"number","nativeSrc":"18007:1:2","nodeType":"YulLiteral","src":"18007:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"17992:3:2","nodeType":"YulIdentifier","src":"17992:3:2"},"nativeSrc":"17992:17:2","nodeType":"YulFunctionCall","src":"17992:17:2"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"17939:43:2","nodeType":"YulIdentifier","src":"17939:43:2"},"nativeSrc":"17939:71:2","nodeType":"YulFunctionCall","src":"17939:71:2"},"nativeSrc":"17939:71:2","nodeType":"YulExpressionStatement","src":"17939:71:2"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"17795:222:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17865:9:2","nodeType":"YulTypedName","src":"17865:9:2","type":""},{"name":"value0","nativeSrc":"17877:6:2","nodeType":"YulTypedName","src":"17877:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17888:4:2","nodeType":"YulTypedName","src":"17888:4:2","type":""}],"src":"17795:222:2"},{"body":{"nativeSrc":"18129:73:2","nodeType":"YulBlock","src":"18129:73:2","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"18151:6:2","nodeType":"YulIdentifier","src":"18151:6:2"},{"kind":"number","nativeSrc":"18159:1:2","nodeType":"YulLiteral","src":"18159:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"18147:3:2","nodeType":"YulIdentifier","src":"18147:3:2"},"nativeSrc":"18147:14:2","nodeType":"YulFunctionCall","src":"18147:14:2"},{"hexValue":"596f7520617265206e6f74206c697374656420617320616e2068656972","kind":"string","nativeSrc":"18163:31:2","nodeType":"YulLiteral","src":"18163:31:2","type":"","value":"You are not listed as an heir"}],"functionName":{"name":"mstore","nativeSrc":"18140:6:2","nodeType":"YulIdentifier","src":"18140:6:2"},"nativeSrc":"18140:55:2","nodeType":"YulFunctionCall","src":"18140:55:2"},"nativeSrc":"18140:55:2","nodeType":"YulExpressionStatement","src":"18140:55:2"}]},"name":"store_literal_in_memory_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625","nativeSrc":"18023:179:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"18121:6:2","nodeType":"YulTypedName","src":"18121:6:2","type":""}],"src":"18023:179:2"},{"body":{"nativeSrc":"18354:220:2","nodeType":"YulBlock","src":"18354:220:2","statements":[{"nativeSrc":"18364:74:2","nodeType":"YulAssignment","src":"18364:74:2","value":{"arguments":[{"name":"pos","nativeSrc":"18430:3:2","nodeType":"YulIdentifier","src":"18430:3:2"},{"kind":"number","nativeSrc":"18435:2:2","nodeType":"YulLiteral","src":"18435:2:2","type":"","value":"29"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"18371:58:2","nodeType":"YulIdentifier","src":"18371:58:2"},"nativeSrc":"18371:67:2","nodeType":"YulFunctionCall","src":"18371:67:2"},"variableNames":[{"name":"pos","nativeSrc":"18364:3:2","nodeType":"YulIdentifier","src":"18364:3:2"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"18536:3:2","nodeType":"YulIdentifier","src":"18536:3:2"}],"functionName":{"name":"store_literal_in_memory_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625","nativeSrc":"18447:88:2","nodeType":"YulIdentifier","src":"18447:88:2"},"nativeSrc":"18447:93:2","nodeType":"YulFunctionCall","src":"18447:93:2"},"nativeSrc":"18447:93:2","nodeType":"YulExpressionStatement","src":"18447:93:2"},{"nativeSrc":"18549:19:2","nodeType":"YulAssignment","src":"18549:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"18560:3:2","nodeType":"YulIdentifier","src":"18560:3:2"},{"kind":"number","nativeSrc":"18565:2:2","nodeType":"YulLiteral","src":"18565:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18556:3:2","nodeType":"YulIdentifier","src":"18556:3:2"},"nativeSrc":"18556:12:2","nodeType":"YulFunctionCall","src":"18556:12:2"},"variableNames":[{"name":"end","nativeSrc":"18549:3:2","nodeType":"YulIdentifier","src":"18549:3:2"}]}]},"name":"abi_encode_t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625_to_t_string_memory_ptr_fromStack","nativeSrc":"18208:366:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"18342:3:2","nodeType":"YulTypedName","src":"18342:3:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"18350:3:2","nodeType":"YulTypedName","src":"18350:3:2","type":""}],"src":"18208:366:2"},{"body":{"nativeSrc":"18751:248:2","nodeType":"YulBlock","src":"18751:248:2","statements":[{"nativeSrc":"18761:26:2","nodeType":"YulAssignment","src":"18761:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"18773:9:2","nodeType":"YulIdentifier","src":"18773:9:2"},{"kind":"number","nativeSrc":"18784:2:2","nodeType":"YulLiteral","src":"18784:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18769:3:2","nodeType":"YulIdentifier","src":"18769:3:2"},"nativeSrc":"18769:18:2","nodeType":"YulFunctionCall","src":"18769:18:2"},"variableNames":[{"name":"tail","nativeSrc":"18761:4:2","nodeType":"YulIdentifier","src":"18761:4:2"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18808:9:2","nodeType":"YulIdentifier","src":"18808:9:2"},{"kind":"number","nativeSrc":"18819:1:2","nodeType":"YulLiteral","src":"18819:1:2","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"18804:3:2","nodeType":"YulIdentifier","src":"18804:3:2"},"nativeSrc":"18804:17:2","nodeType":"YulFunctionCall","src":"18804:17:2"},{"arguments":[{"name":"tail","nativeSrc":"18827:4:2","nodeType":"YulIdentifier","src":"18827:4:2"},{"name":"headStart","nativeSrc":"18833:9:2","nodeType":"YulIdentifier","src":"18833:9:2"}],"functionName":{"name":"sub","nativeSrc":"18823:3:2","nodeType":"YulIdentifier","src":"18823:3:2"},"nativeSrc":"18823:20:2","nodeType":"YulFunctionCall","src":"18823:20:2"}],"functionName":{"name":"mstore","nativeSrc":"18797:6:2","nodeType":"YulIdentifier","src":"18797:6:2"},"nativeSrc":"18797:47:2","nodeType":"YulFunctionCall","src":"18797:47:2"},"nativeSrc":"18797:47:2","nodeType":"YulExpressionStatement","src":"18797:47:2"},{"nativeSrc":"18853:139:2","nodeType":"YulAssignment","src":"18853:139:2","value":{"arguments":[{"name":"tail","nativeSrc":"18987:4:2","nodeType":"YulIdentifier","src":"18987:4:2"}],"functionName":{"name":"abi_encode_t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625_to_t_string_memory_ptr_fromStack","nativeSrc":"18861:124:2","nodeType":"YulIdentifier","src":"18861:124:2"},"nativeSrc":"18861:131:2","nodeType":"YulFunctionCall","src":"18861:131:2"},"variableNames":[{"name":"tail","nativeSrc":"18853:4:2","nodeType":"YulIdentifier","src":"18853:4:2"}]}]},"name":"abi_encode_tuple_t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"18580:419:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18731:9:2","nodeType":"YulTypedName","src":"18731:9:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18746:4:2","nodeType":"YulTypedName","src":"18746:4:2","type":""}],"src":"18580:419:2"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_string_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_uint256t_addresst_uint256t_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1, value2 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8(memPtr) {\n\n mstore(add(memPtr, 0), \"Only assigned lawyer can activat\")\n\n mstore(add(memPtr, 32), \"e the testament\")\n\n }\n\n function abi_encode_t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 47)\n store_literal_in_memory_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d671aadf7f664ee64609195fa4f55ce3a85aa9965367c8a4b692a6b4a886e0b8_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c(memPtr) {\n\n mstore(add(memPtr, 0), \"Only owner can add heirs\")\n\n }\n\n function abi_encode_t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_da7e0d873ec947eb3edd1b43f1d87f9c5d42c93dd91c32af2290b1cc78489f3c_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function store_literal_in_memory_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5(memPtr) {\n\n mstore(add(memPtr, 0), \"Testament is not active\")\n\n }\n\n function abi_encode_t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 23)\n store_literal_in_memory_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b0a62db105f175c11a5242bea15412e02c7e03e77d165b0214b20d75aff5bcb5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function store_literal_in_memory_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625(memPtr) {\n\n mstore(add(memPtr, 0), \"You are not listed as an heir\")\n\n }\n\n function abi_encode_t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n store_literal_in_memory_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9063a57f16a9da084dda60e631d3507bfd627882cb4b3b7d981829bab9dd2625_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":2,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100625760003560e01c80638508e152146100675780639b6fc2e2146100975780639ccef960146100b3578063af21e42a146100cf578063d1d3a04c14610100578063d5df76a31461011e575b600080fd5b610081600480360381019061007c9190610881565b610150565b60405161008e91906108c7565b60405180910390f35b6100b160048036038101906100ac919061090e565b61026c565b005b6100cd60048036038101906100c89190610a81565b61036d565b005b6100e960048036038101906100e49190610b64565b6104ee565b6040516100f7929190610c43565b60405180910390f35b610108610792565b60405161011591906108c7565b60405180910390f35b6101386004803603810190610133919061090e565b610798565b60405161014793929190610c9d565b60405180910390f35b60006001600081548092919061016590610d03565b9190505550600080600060015481526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160010160146101000a81548160ff0219169083151502179055506001547f9c6a0135230f01de660fe231c80c4d2e0d8d9ee407b4d0d628823617469b55833385604051610259929190610d4b565b60405180910390a2600154915050919050565b60008082815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030690610de6565b60405180910390fd5b600160008083815260200190815260200160002060010160146101000a81548160ff021916908315150217905550807f738789d97160bfe471f3c5d5da0280bb24b2ee025a7b5d68d05831f758c4602060405160405180910390a250565b60008085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040790610e52565b60405180910390fd5b60008085815260200190815260200160002060020160405180606001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020190816104e5919061107e565b50505050505050565b6000606060008086815260200190815260200160002060010160149054906101000a900460ff16610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b9061119c565b60405180910390fd5b60005b6000808781526020019081526020016000206002018054905081101561074e573373ffffffffffffffffffffffffffffffffffffffff1660008088815260200190815260200160002060020182815481106105b5576105b46111bc565b5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361074157857f2edeba758f9de0f2e37457a533bc3cea5345b89fe919eb96dce18ba028b7d63e3360405161063291906111eb565b60405180910390a26000808781526020019081526020016000206002018181548110610661576106606111bc565b5b906000526020600020906003020160010154600080888152602001908152602001600020600201828154811061069a576106996111bc565b5b90600052602060002090600302016002018080546106b790610ea1565b80601f01602080910402602001604051908101604052809291908181526020018280546106e390610ea1565b80156107305780601f1061070557610100808354040283529160200191610730565b820191906000526020600020905b81548152906001019060200180831161071357829003601f168201915b50505050509050925092505061078a565b8080600101915050610557565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190611252565b60405180910390fd5b935093915050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900460ff16905083565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061084e82610823565b9050919050565b61085e81610843565b811461086957600080fd5b50565b60008135905061087b81610855565b92915050565b60006020828403121561089757610896610819565b5b60006108a58482850161086c565b91505092915050565b6000819050919050565b6108c1816108ae565b82525050565b60006020820190506108dc60008301846108b8565b92915050565b6108eb816108ae565b81146108f657600080fd5b50565b600081359050610908816108e2565b92915050565b60006020828403121561092457610923610819565b5b6000610932848285016108f9565b91505092915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61098e82610945565b810181811067ffffffffffffffff821117156109ad576109ac610956565b5b80604052505050565b60006109c061080f565b90506109cc8282610985565b919050565b600067ffffffffffffffff8211156109ec576109eb610956565b5b6109f582610945565b9050602081019050919050565b82818337600083830152505050565b6000610a24610a1f846109d1565b6109b6565b905082815260208101848484011115610a4057610a3f610940565b5b610a4b848285610a02565b509392505050565b600082601f830112610a6857610a6761093b565b5b8135610a78848260208601610a11565b91505092915050565b60008060008060808587031215610a9b57610a9a610819565b5b6000610aa9878288016108f9565b9450506020610aba8782880161086c565b9350506040610acb878288016108f9565b925050606085013567ffffffffffffffff811115610aec57610aeb61081e565b5b610af887828801610a53565b91505092959194509250565b600080fd5b600080fd5b60008083601f840112610b2457610b2361093b565b5b8235905067ffffffffffffffff811115610b4157610b40610b04565b5b602083019150836001820283011115610b5d57610b5c610b09565b5b9250929050565b600080600060408486031215610b7d57610b7c610819565b5b6000610b8b868287016108f9565b935050602084013567ffffffffffffffff811115610bac57610bab61081e565b5b610bb886828701610b0e565b92509250509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015610bfe578082015181840152602081019050610be3565b60008484015250505050565b6000610c1582610bc4565b610c1f8185610bcf565b9350610c2f818560208601610be0565b610c3881610945565b840191505092915050565b6000604082019050610c5860008301856108b8565b8181036020830152610c6a8184610c0a565b90509392505050565b610c7c81610843565b82525050565b60008115159050919050565b610c9781610c82565b82525050565b6000606082019050610cb26000830186610c73565b610cbf6020830185610c73565b610ccc6040830184610c8e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d0e826108ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610d4057610d3f610cd4565b5b600182019050919050565b6000604082019050610d606000830185610c73565b610d6d6020830184610c73565b9392505050565b7f4f6e6c792061737369676e6564206c61777965722063616e206163746976617460008201527f65207468652074657374616d656e740000000000000000000000000000000000602082015250565b6000610dd0602f83610bcf565b9150610ddb82610d74565b604082019050919050565b60006020820190508181036000830152610dff81610dc3565b9050919050565b7f4f6e6c79206f776e65722063616e206164642068656972730000000000000000600082015250565b6000610e3c601883610bcf565b9150610e4782610e06565b602082019050919050565b60006020820190508181036000830152610e6b81610e2f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610eb957607f821691505b602082108103610ecc57610ecb610e72565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610ef7565b610f3e8683610ef7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000610f7b610f76610f71846108ae565b610f56565b6108ae565b9050919050565b6000819050919050565b610f9583610f60565b610fa9610fa182610f82565b848454610f04565b825550505050565b600090565b610fbe610fb1565b610fc9818484610f8c565b505050565b5b81811015610fed57610fe2600082610fb6565b600181019050610fcf565b5050565b601f8211156110325761100381610ed2565b61100c84610ee7565b8101602085101561101b578190505b61102f61102785610ee7565b830182610fce565b50505b505050565b600082821c905092915050565b600061105560001984600802611037565b1980831691505092915050565b600061106e8383611044565b9150826002028217905092915050565b61108782610bc4565b67ffffffffffffffff8111156110a05761109f610956565b5b6110aa8254610ea1565b6110b5828285610ff1565b600060209050601f8311600181146110e857600084156110d6578287015190505b6110e08582611062565b865550611148565b601f1984166110f686610ed2565b60005b8281101561111e578489015182556001820191506020850194506020810190506110f9565b8683101561113b5784890151611137601f891682611044565b8355505b6001600288020188555050505b505050505050565b7f54657374616d656e74206973206e6f7420616374697665000000000000000000600082015250565b6000611186601783610bcf565b915061119182611150565b602082019050919050565b600060208201905081810360008301526111b581611179565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506112006000830184610c73565b92915050565b7f596f7520617265206e6f74206c697374656420617320616e2068656972000000600082015250565b600061123c601d83610bcf565b915061124782611206565b602082019050919050565b6000602082019050818103600083015261126b8161122f565b905091905056fea2646970667358221220742b74c6f0810922b13374aed19e65c2974b4d9dadb72edaa1230b9d4d63fca064736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8508E152 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x9B6FC2E2 EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x9CCEF960 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAF21E42A EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0xD1D3A04C EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0xD5DF76A3 EQ PUSH2 0x11E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x81 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x881 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8E SWAP2 SWAP1 PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x90E JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xA81 JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB64 JUMP JUMPDEST PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP3 SWAP2 SWAP1 PUSH2 0xC43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x792 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x90E JUMP JUMPDEST PUSH2 0x798 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x147 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x165 SWAP1 PUSH2 0xD03 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP CALLER DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP3 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 SLOAD PUSH32 0x9C6A0135230F01DE660FE231C80C4D2E0D8D9EE407B4D0D628823617469B5583 CALLER DUP6 PUSH1 0x40 MLOAD PUSH2 0x259 SWAP3 SWAP2 SWAP1 PUSH2 0xD4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x30F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x306 SWAP1 PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH32 0x738789D97160BFE471F3C5D5DA0280BB24B2EE025A7B5D68D05831F758C46020 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x410 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x407 SWAP1 PUSH2 0xE52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP2 PUSH2 0x4E5 SWAP2 SWAP1 PUSH2 0x107E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x554 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x54B SWAP1 PUSH2 0x119C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x74E JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5B5 JUMPI PUSH2 0x5B4 PUSH2 0x11BC JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x741 JUMPI DUP6 PUSH32 0x2EDEBA758F9DE0F2E37457A533BC3CEA5345B89FE919EB96DCE18BA028B7D63E CALLER PUSH1 0x40 MLOAD PUSH2 0x632 SWAP2 SWAP1 PUSH2 0x11EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x661 JUMPI PUSH2 0x660 PUSH2 0x11BC JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD PUSH1 0x0 DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x69A JUMPI PUSH2 0x699 PUSH2 0x11BC JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP1 DUP1 SLOAD PUSH2 0x6B7 SWAP1 PUSH2 0xEA1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6E3 SWAP1 PUSH2 0xEA1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x730 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x705 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x730 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x713 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP3 POP SWAP3 POP POP PUSH2 0x78A JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x557 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x781 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP DUP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84E DUP3 PUSH2 0x823 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x85E DUP2 PUSH2 0x843 JUMP JUMPDEST DUP2 EQ PUSH2 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x87B DUP2 PUSH2 0x855 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH2 0x896 PUSH2 0x819 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8A5 DUP5 DUP3 DUP6 ADD PUSH2 0x86C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8C1 DUP2 PUSH2 0x8AE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8DC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x8B8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x8EB DUP2 PUSH2 0x8AE JUMP JUMPDEST DUP2 EQ PUSH2 0x8F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x908 DUP2 PUSH2 0x8E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x924 JUMPI PUSH2 0x923 PUSH2 0x819 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x932 DUP5 DUP3 DUP6 ADD PUSH2 0x8F9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x98E DUP3 PUSH2 0x945 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x9AD JUMPI PUSH2 0x9AC PUSH2 0x956 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C0 PUSH2 0x80F JUMP JUMPDEST SWAP1 POP PUSH2 0x9CC DUP3 DUP3 PUSH2 0x985 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x9EC JUMPI PUSH2 0x9EB PUSH2 0x956 JUMP JUMPDEST JUMPDEST PUSH2 0x9F5 DUP3 PUSH2 0x945 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA24 PUSH2 0xA1F DUP5 PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0x9B6 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0xA40 JUMPI PUSH2 0xA3F PUSH2 0x940 JUMP JUMPDEST JUMPDEST PUSH2 0xA4B DUP5 DUP3 DUP6 PUSH2 0xA02 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA68 JUMPI PUSH2 0xA67 PUSH2 0x93B JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA78 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0xA11 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA9B JUMPI PUSH2 0xA9A PUSH2 0x819 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAA9 DUP8 DUP3 DUP9 ADD PUSH2 0x8F9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xABA DUP8 DUP3 DUP9 ADD PUSH2 0x86C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xACB DUP8 DUP3 DUP9 ADD PUSH2 0x8F9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEC JUMPI PUSH2 0xAEB PUSH2 0x81E JUMP JUMPDEST JUMPDEST PUSH2 0xAF8 DUP8 DUP3 DUP9 ADD PUSH2 0xA53 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xB24 JUMPI PUSH2 0xB23 PUSH2 0x93B JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB41 JUMPI PUSH2 0xB40 PUSH2 0xB04 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xB5D JUMPI PUSH2 0xB5C PUSH2 0xB09 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xB7D JUMPI PUSH2 0xB7C PUSH2 0x819 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB8B DUP7 DUP3 DUP8 ADD PUSH2 0x8F9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAB PUSH2 0x81E JUMP JUMPDEST JUMPDEST PUSH2 0xBB8 DUP7 DUP3 DUP8 ADD PUSH2 0xB0E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBFE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xBE3 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC15 DUP3 PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0xC1F DUP2 DUP6 PUSH2 0xBCF JUMP JUMPDEST SWAP4 POP PUSH2 0xC2F DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBE0 JUMP JUMPDEST PUSH2 0xC38 DUP2 PUSH2 0x945 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xC58 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x8B8 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xC6A DUP2 DUP5 PUSH2 0xC0A JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC7C DUP2 PUSH2 0x843 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC97 DUP2 PUSH2 0xC82 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xCB2 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xCBF PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xCCC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xC8E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD0E DUP3 PUSH2 0x8AE JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xD40 JUMPI PUSH2 0xD3F PUSH2 0xCD4 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xD60 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xD6D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F6E6C792061737369676E6564206C61777965722063616E2061637469766174 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x65207468652074657374616D656E740000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD0 PUSH1 0x2F DUP4 PUSH2 0xBCF JUMP JUMPDEST SWAP2 POP PUSH2 0xDDB DUP3 PUSH2 0xD74 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xDFF DUP2 PUSH2 0xDC3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F6E6C79206F776E65722063616E206164642068656972730000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE3C PUSH1 0x18 DUP4 PUSH2 0xBCF JUMP JUMPDEST SWAP2 POP PUSH2 0xE47 DUP3 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE6B DUP2 PUSH2 0xE2F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEB9 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xECC JUMPI PUSH2 0xECB PUSH2 0xE72 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF34 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xEF7 JUMP JUMPDEST PUSH2 0xF3E DUP7 DUP4 PUSH2 0xEF7 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7B PUSH2 0xF76 PUSH2 0xF71 DUP5 PUSH2 0x8AE JUMP JUMPDEST PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x8AE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF95 DUP4 PUSH2 0xF60 JUMP JUMPDEST PUSH2 0xFA9 PUSH2 0xFA1 DUP3 PUSH2 0xF82 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xF04 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFBE PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xFC9 DUP2 DUP5 DUP5 PUSH2 0xF8C JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFE2 PUSH1 0x0 DUP3 PUSH2 0xFB6 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xFCF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1032 JUMPI PUSH2 0x1003 DUP2 PUSH2 0xED2 JUMP JUMPDEST PUSH2 0x100C DUP5 PUSH2 0xEE7 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x101B JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x102F PUSH2 0x1027 DUP6 PUSH2 0xEE7 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0xFCE JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1055 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1037 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x106E DUP4 DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1087 DUP3 PUSH2 0xBC4 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10A0 JUMPI PUSH2 0x109F PUSH2 0x956 JUMP JUMPDEST JUMPDEST PUSH2 0x10AA DUP3 SLOAD PUSH2 0xEA1 JUMP JUMPDEST PUSH2 0x10B5 DUP3 DUP3 DUP6 PUSH2 0xFF1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x10E8 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x10D6 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x10E0 DUP6 DUP3 PUSH2 0x1062 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x1148 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x10F6 DUP7 PUSH2 0xED2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x111E JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10F9 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x113B JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x1137 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x1044 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x54657374616D656E74206973206E6F7420616374697665000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1186 PUSH1 0x17 DUP4 PUSH2 0xBCF JUMP JUMPDEST SWAP2 POP PUSH2 0x1191 DUP3 PUSH2 0x1150 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11B5 DUP2 PUSH2 0x1179 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1200 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x596F7520617265206E6F74206C697374656420617320616E2068656972000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123C PUSH1 0x1D DUP4 PUSH2 0xBCF JUMP JUMPDEST SWAP2 POP PUSH2 0x1247 DUP3 PUSH2 0x1206 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x126B DUP2 PUSH2 0x122F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH21 0x2B74C6F0810922B13374AED19E65C2974B4D9DADB7 0x2E 0xDA LOG1 0x23 SIGNEXTEND SWAP14 0x4D PUSH4 0xFCA06473 PUSH16 0x6C634300081C00330000000000000000 ","sourceMap":"61:2342:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:403;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1435:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1127:300;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1724:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;429:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;371:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;716:403;776:7;796:14;;:16;;;;;;;;;:::i;:::-;;;;;;823:34;860:10;:26;871:14;;860:26;;;;;;;;;;;823:63;;918:10;897:12;:18;;;:31;;;;;;;;;;;;;;;;;;961:7;939:12;:19;;;:29;;;;;;;;;;;;;;;;;;1003:5;979:12;:21;;;:29;;;;;;;;;;;;;;;;;;1043:14;;1026:53;1059:10;1071:7;1026:53;;;;;;;:::i;:::-;;;;;;;;1097:14;;1090:21;;;716:403;;;:::o;1435:281::-;1526:10;:24;1537:12;1526:24;;;;;;;;;;;:31;;;;;;;;;;;;1512:45;;:10;:45;;;1504:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;1656:4;1620:10;:24;1631:12;1620:24;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;1695:12;1676:32;;;;;;;;;;1435:281;:::o;1127:300::-;1273:10;:24;1284:12;1273:24;;;;;;;;;;;:30;;;;;;;;;;;;1259:44;;:10;:44;;;1251:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;1343:10;:24;1354:12;1343:24;;;;;;;;;;;:30;;1379:39;;;;;;;;1384:5;1379:39;;;;;;1391:11;1379:39;;;;1404:13;1379:39;;;1343:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1127:300;;;;:::o;1724:676::-;1812:7;1821:13;1855:10;:24;1866:12;1855:24;;;;;;;;;;;:33;;;;;;;;;;;;1847:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1934:6;1929:414;1950:10;:24;1961:12;1950:24;;;;;;;;;;;:30;;:37;;;;1946:1;:41;1929:414;;;2062:10;2013:59;;:10;:24;2024:12;2013:24;;;;;;;;;;;:30;;2044:1;2013:33;;;;;;;;:::i;:::-;;;;;;;;;;;;:45;;;;;;;;;;;;:59;;;2009:323;;2171:12;2152:44;2185:10;2152:44;;;;;;:::i;:::-;;;;;;;;2223:10;:24;2234:12;2223:24;;;;;;;;;;;:30;;2254:1;2223:33;;;;;;;;:::i;:::-;;;;;;;;;;;;:44;;;2269:10;:24;2280:12;2269:24;;;;;;;;;;;:30;;2300:1;2269:33;;;;;;;;:::i;:::-;;;;;;;;;;;;:46;;2215:101;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2009:323;1989:3;;;;;;;1929:414;;;;2353:39;;;;;;;;;;:::i;:::-;;;;;;;;1724:676;;;;;;;:::o;429:29::-;;;;:::o;371:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:2:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:117::-;2328:1;2325;2318:12;2342:117;2451:1;2448;2441:12;2465:102;2506:6;2557:2;2553:7;2548:2;2541:5;2537:14;2533:28;2523:38;;2465:102;;;:::o;2573:180::-;2621:77;2618:1;2611:88;2718:4;2715:1;2708:15;2742:4;2739:1;2732:15;2759:281;2842:27;2864:4;2842:27;:::i;:::-;2834:6;2830:40;2972:6;2960:10;2957:22;2936:18;2924:10;2921:34;2918:62;2915:88;;;2983:18;;:::i;:::-;2915:88;3023:10;3019:2;3012:22;2802:238;2759:281;;:::o;3046:129::-;3080:6;3107:20;;:::i;:::-;3097:30;;3136:33;3164:4;3156:6;3136:33;:::i;:::-;3046:129;;;:::o;3181:308::-;3243:4;3333:18;3325:6;3322:30;3319:56;;;3355:18;;:::i;:::-;3319:56;3393:29;3415:6;3393:29;:::i;:::-;3385:37;;3477:4;3471;3467:15;3459:23;;3181:308;;;:::o;3495:148::-;3593:6;3588:3;3583;3570:30;3634:1;3625:6;3620:3;3616:16;3609:27;3495:148;;;:::o;3649:425::-;3727:5;3752:66;3768:49;3810:6;3768:49;:::i;:::-;3752:66;:::i;:::-;3743:75;;3841:6;3834:5;3827:21;3879:4;3872:5;3868:16;3917:3;3908:6;3903:3;3899:16;3896:25;3893:112;;;3924:79;;:::i;:::-;3893:112;4014:54;4061:6;4056:3;4051;4014:54;:::i;:::-;3733:341;3649:425;;;;;:::o;4094:340::-;4150:5;4199:3;4192:4;4184:6;4180:17;4176:27;4166:122;;4207:79;;:::i;:::-;4166:122;4324:6;4311:20;4349:79;4424:3;4416:6;4409:4;4401:6;4397:17;4349:79;:::i;:::-;4340:88;;4156:278;4094:340;;;;:::o;4440:945::-;4536:6;4544;4552;4560;4609:3;4597:9;4588:7;4584:23;4580:33;4577:120;;;4616:79;;:::i;:::-;4577:120;4736:1;4761:53;4806:7;4797:6;4786:9;4782:22;4761:53;:::i;:::-;4751:63;;4707:117;4863:2;4889:53;4934:7;4925:6;4914:9;4910:22;4889:53;:::i;:::-;4879:63;;4834:118;4991:2;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4962:118;5147:2;5136:9;5132:18;5119:32;5178:18;5170:6;5167:30;5164:117;;;5200:79;;:::i;:::-;5164:117;5305:63;5360:7;5351:6;5340:9;5336:22;5305:63;:::i;:::-;5295:73;;5090:288;4440:945;;;;;;;:::o;5391:117::-;5500:1;5497;5490:12;5514:117;5623:1;5620;5613:12;5650:552;5707:8;5717:6;5767:3;5760:4;5752:6;5748:17;5744:27;5734:122;;5775:79;;:::i;:::-;5734:122;5888:6;5875:20;5865:30;;5918:18;5910:6;5907:30;5904:117;;;5940:79;;:::i;:::-;5904:117;6054:4;6046:6;6042:17;6030:29;;6108:3;6100:4;6092:6;6088:17;6078:8;6074:32;6071:41;6068:128;;;6115:79;;:::i;:::-;6068:128;5650:552;;;;;:::o;6208:672::-;6287:6;6295;6303;6352:2;6340:9;6331:7;6327:23;6323:32;6320:119;;;6358:79;;:::i;:::-;6320:119;6478:1;6503:53;6548:7;6539:6;6528:9;6524:22;6503:53;:::i;:::-;6493:63;;6449:117;6633:2;6622:9;6618:18;6605:32;6664:18;6656:6;6653:30;6650:117;;;6686:79;;:::i;:::-;6650:117;6799:64;6855:7;6846:6;6835:9;6831:22;6799:64;:::i;:::-;6781:82;;;;6576:297;6208:672;;;;;:::o;6886:99::-;6938:6;6972:5;6966:12;6956:22;;6886:99;;;:::o;6991:169::-;7075:11;7109:6;7104:3;7097:19;7149:4;7144:3;7140:14;7125:29;;6991:169;;;;:::o;7166:248::-;7248:1;7258:113;7272:6;7269:1;7266:13;7258:113;;;7357:1;7352:3;7348:11;7342:18;7338:1;7333:3;7329:11;7322:39;7294:2;7291:1;7287:10;7282:15;;7258:113;;;7405:1;7396:6;7391:3;7387:16;7380:27;7228:186;7166:248;;;:::o;7420:377::-;7508:3;7536:39;7569:5;7536:39;:::i;:::-;7591:71;7655:6;7650:3;7591:71;:::i;:::-;7584:78;;7671:65;7729:6;7724:3;7717:4;7710:5;7706:16;7671:65;:::i;:::-;7761:29;7783:6;7761:29;:::i;:::-;7756:3;7752:39;7745:46;;7512:285;7420:377;;;;:::o;7803:423::-;7944:4;7982:2;7971:9;7967:18;7959:26;;7995:71;8063:1;8052:9;8048:17;8039:6;7995:71;:::i;:::-;8113:9;8107:4;8103:20;8098:2;8087:9;8083:18;8076:48;8141:78;8214:4;8205:6;8141:78;:::i;:::-;8133:86;;7803:423;;;;;:::o;8232:118::-;8319:24;8337:5;8319:24;:::i;:::-;8314:3;8307:37;8232:118;;:::o;8356:90::-;8390:7;8433:5;8426:13;8419:21;8408:32;;8356:90;;;:::o;8452:109::-;8533:21;8548:5;8533:21;:::i;:::-;8528:3;8521:34;8452:109;;:::o;8567:430::-;8710:4;8748:2;8737:9;8733:18;8725:26;;8761:71;8829:1;8818:9;8814:17;8805:6;8761:71;:::i;:::-;8842:72;8910:2;8899:9;8895:18;8886:6;8842:72;:::i;:::-;8924:66;8986:2;8975:9;8971:18;8962:6;8924:66;:::i;:::-;8567:430;;;;;;:::o;9003:180::-;9051:77;9048:1;9041:88;9148:4;9145:1;9138:15;9172:4;9169:1;9162:15;9189:233;9228:3;9251:24;9269:5;9251:24;:::i;:::-;9242:33;;9297:66;9290:5;9287:77;9284:103;;9367:18;;:::i;:::-;9284:103;9414:1;9407:5;9403:13;9396:20;;9189:233;;;:::o;9428:332::-;9549:4;9587:2;9576:9;9572:18;9564:26;;9600:71;9668:1;9657:9;9653:17;9644:6;9600:71;:::i;:::-;9681:72;9749:2;9738:9;9734:18;9725:6;9681:72;:::i;:::-;9428:332;;;;;:::o;9766:234::-;9906:34;9902:1;9894:6;9890:14;9883:58;9975:17;9970:2;9962:6;9958:15;9951:42;9766:234;:::o;10006:366::-;10148:3;10169:67;10233:2;10228:3;10169:67;:::i;:::-;10162:74;;10245:93;10334:3;10245:93;:::i;:::-;10363:2;10358:3;10354:12;10347:19;;10006:366;;;:::o;10378:419::-;10544:4;10582:2;10571:9;10567:18;10559:26;;10631:9;10625:4;10621:20;10617:1;10606:9;10602:17;10595:47;10659:131;10785:4;10659:131;:::i;:::-;10651:139;;10378:419;;;:::o;10803:174::-;10943:26;10939:1;10931:6;10927:14;10920:50;10803:174;:::o;10983:366::-;11125:3;11146:67;11210:2;11205:3;11146:67;:::i;:::-;11139:74;;11222:93;11311:3;11222:93;:::i;:::-;11340:2;11335:3;11331:12;11324:19;;10983:366;;;:::o;11355:419::-;11521:4;11559:2;11548:9;11544:18;11536:26;;11608:9;11602:4;11598:20;11594:1;11583:9;11579:17;11572:47;11636:131;11762:4;11636:131;:::i;:::-;11628:139;;11355:419;;;:::o;11780:180::-;11828:77;11825:1;11818:88;11925:4;11922:1;11915:15;11949:4;11946:1;11939:15;11966:320;12010:6;12047:1;12041:4;12037:12;12027:22;;12094:1;12088:4;12084:12;12115:18;12105:81;;12171:4;12163:6;12159:17;12149:27;;12105:81;12233:2;12225:6;12222:14;12202:18;12199:38;12196:84;;12252:18;;:::i;:::-;12196:84;12017:269;11966:320;;;:::o;12292:141::-;12341:4;12364:3;12356:11;;12387:3;12384:1;12377:14;12421:4;12418:1;12408:18;12400:26;;12292:141;;;:::o;12439:93::-;12476:6;12523:2;12518;12511:5;12507:14;12503:23;12493:33;;12439:93;;;:::o;12538:107::-;12582:8;12632:5;12626:4;12622:16;12601:37;;12538:107;;;;:::o;12651:393::-;12720:6;12770:1;12758:10;12754:18;12793:97;12823:66;12812:9;12793:97;:::i;:::-;12911:39;12941:8;12930:9;12911:39;:::i;:::-;12899:51;;12983:4;12979:9;12972:5;12968:21;12959:30;;13032:4;13022:8;13018:19;13011:5;13008:30;12998:40;;12727:317;;12651:393;;;;;:::o;13050:60::-;13078:3;13099:5;13092:12;;13050:60;;;:::o;13116:142::-;13166:9;13199:53;13217:34;13226:24;13244:5;13226:24;:::i;:::-;13217:34;:::i;:::-;13199:53;:::i;:::-;13186:66;;13116:142;;;:::o;13264:75::-;13307:3;13328:5;13321:12;;13264:75;;;:::o;13345:269::-;13455:39;13486:7;13455:39;:::i;:::-;13516:91;13565:41;13589:16;13565:41;:::i;:::-;13557:6;13550:4;13544:11;13516:91;:::i;:::-;13510:4;13503:105;13421:193;13345:269;;;:::o;13620:73::-;13665:3;13620:73;:::o;13699:189::-;13776:32;;:::i;:::-;13817:65;13875:6;13867;13861:4;13817:65;:::i;:::-;13752:136;13699:189;;:::o;13894:186::-;13954:120;13971:3;13964:5;13961:14;13954:120;;;14025:39;14062:1;14055:5;14025:39;:::i;:::-;13998:1;13991:5;13987:13;13978:22;;13954:120;;;13894:186;;:::o;14086:543::-;14187:2;14182:3;14179:11;14176:446;;;14221:38;14253:5;14221:38;:::i;:::-;14305:29;14323:10;14305:29;:::i;:::-;14295:8;14291:44;14488:2;14476:10;14473:18;14470:49;;;14509:8;14494:23;;14470:49;14532:80;14588:22;14606:3;14588:22;:::i;:::-;14578:8;14574:37;14561:11;14532:80;:::i;:::-;14191:431;;14176:446;14086:543;;;:::o;14635:117::-;14689:8;14739:5;14733:4;14729:16;14708:37;;14635:117;;;;:::o;14758:169::-;14802:6;14835:51;14883:1;14879:6;14871:5;14868:1;14864:13;14835:51;:::i;:::-;14831:56;14916:4;14910;14906:15;14896:25;;14809:118;14758:169;;;;:::o;14932:295::-;15008:4;15154:29;15179:3;15173:4;15154:29;:::i;:::-;15146:37;;15216:3;15213:1;15209:11;15203:4;15200:21;15192:29;;14932:295;;;;:::o;15232:1395::-;15349:37;15382:3;15349:37;:::i;:::-;15451:18;15443:6;15440:30;15437:56;;;15473:18;;:::i;:::-;15437:56;15517:38;15549:4;15543:11;15517:38;:::i;:::-;15602:67;15662:6;15654;15648:4;15602:67;:::i;:::-;15696:1;15720:4;15707:17;;15752:2;15744:6;15741:14;15769:1;15764:618;;;;16426:1;16443:6;16440:77;;;16492:9;16487:3;16483:19;16477:26;16468:35;;16440:77;16543:67;16603:6;16596:5;16543:67;:::i;:::-;16537:4;16530:81;16399:222;15734:887;;15764:618;15816:4;15812:9;15804:6;15800:22;15850:37;15882:4;15850:37;:::i;:::-;15909:1;15923:208;15937:7;15934:1;15931:14;15923:208;;;16016:9;16011:3;16007:19;16001:26;15993:6;15986:42;16067:1;16059:6;16055:14;16045:24;;16114:2;16103:9;16099:18;16086:31;;15960:4;15957:1;15953:12;15948:17;;15923:208;;;16159:6;16150:7;16147:19;16144:179;;;16217:9;16212:3;16208:19;16202:26;16260:48;16302:4;16294:6;16290:17;16279:9;16260:48;:::i;:::-;16252:6;16245:64;16167:156;16144:179;16369:1;16365;16357:6;16353:14;16349:22;16343:4;16336:36;15771:611;;;15734:887;;15324:1303;;;15232:1395;;:::o;16633:173::-;16773:25;16769:1;16761:6;16757:14;16750:49;16633:173;:::o;16812:366::-;16954:3;16975:67;17039:2;17034:3;16975:67;:::i;:::-;16968:74;;17051:93;17140:3;17051:93;:::i;:::-;17169:2;17164:3;17160:12;17153:19;;16812:366;;;:::o;17184:419::-;17350:4;17388:2;17377:9;17373:18;17365:26;;17437:9;17431:4;17427:20;17423:1;17412:9;17408:17;17401:47;17465:131;17591:4;17465:131;:::i;:::-;17457:139;;17184:419;;;:::o;17609:180::-;17657:77;17654:1;17647:88;17754:4;17751:1;17744:15;17778:4;17775:1;17768:15;17795:222;17888:4;17926:2;17915:9;17911:18;17903:26;;17939:71;18007:1;17996:9;17992:17;17983:6;17939:71;:::i;:::-;17795:222;;;;:::o;18023:179::-;18163:31;18159:1;18151:6;18147:14;18140:55;18023:179;:::o;18208:366::-;18350:3;18371:67;18435:2;18430:3;18371:67;:::i;:::-;18364:74;;18447:93;18536:3;18447:93;:::i;:::-;18565:2;18560:3;18556:12;18549:19;;18208:366;;;:::o;18580:419::-;18746:4;18784:2;18773:9;18769:18;18761:26;;18833:9;18827:4;18823:20;18819:1;18808:9;18804:17;18797:47;18861:131;18987:4;18861:131;:::i;:::-;18853:139;;18580:419;;;:::o"},"methodIdentifiers":{"activateTestament(uint256)":"9b6fc2e2","addHeir(uint256,address,uint256,string)":"9ccef960","claimInheritance(uint256,bytes)":"af21e42a","createTestament(address)":"8508e152","testamentCount()":"d1d3a04c","testaments(uint256)":"d5df76a3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"testamentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"heir\",\"type\":\"address\"}],\"name\":\"InheritanceClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"testamentId\",\"type\":\"uint256\"}],\"name\":\"TestamentActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"testamentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lawyer\",\"type\":\"address\"}],\"name\":\"TestamentCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_testamentId\",\"type\":\"uint256\"}],\"name\":\"activateTestament\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_testamentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_heir\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_documentHash\",\"type\":\"string\"}],\"name\":\"addHeir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_testamentId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"claimInheritance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lawyer\",\"type\":\"address\"}],\"name\":\"createTestament\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testamentCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"testaments\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"lawyer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/testament.sol\":\"Testament\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/testament.sol\":{\"keccak256\":\"0x1f633c40062e2601b5e3688e185412c617760e9bb2650762e6a72e2469c3a7df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41bb596890f027b1454c2369c6630ea5df95cefeef4717fef1b8c68fe6b321bb\",\"dweb:/ipfs/Qmc2c1n6JV8oX5TsNE5fBwwCRu7i9nkPehwMi7oMH6HWte\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/artifacts/contracts/Lock.sol/Lock.dbg.json b/artifacts/contracts/Lock.sol/Lock.dbg.json new file mode 100644 index 0000000..d1356e5 --- /dev/null +++ b/artifacts/contracts/Lock.sol/Lock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "..\\..\\build-info\\417d3dbc8db15915c9bd7194504cd3bf.json" +} diff --git a/artifacts/contracts/Lock.sol/Lock.json b/artifacts/contracts/Lock.sol/Lock.json new file mode 100644 index 0000000..7c5a25f --- /dev/null +++ b/artifacts/contracts/Lock.sol/Lock.json @@ -0,0 +1,74 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Lock", + "sourceName": "contracts/Lock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_unlockTime", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "when", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unlockTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526040516105d83803806105d8833981810160405281019061002591906100f0565b804210610067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161005e906101a0565b60405180910390fd5b8060008190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506101c0565b600080fd5b6000819050919050565b6100cd816100ba565b81146100d857600080fd5b50565b6000815190506100ea816100c4565b92915050565b600060208284031215610106576101056100b5565b5b6000610114848285016100db565b91505092915050565b600082825260208201905092915050565b7f556e6c6f636b2074696d652073686f756c6420626520696e207468652066757460008201527f7572650000000000000000000000000000000000000000000000000000000000602082015250565b600061018a60238361011d565b91506101958261012e565b604082019050919050565b600060208201905081810360008301526101b98161017d565b9050919050565b610409806101cf6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100645780638da5cb5b1461006e575b600080fd5b61004e61008c565b60405161005b919061024a565b60405180910390f35b61006c610092565b005b61007661020b565b60405161008391906102a6565b60405180910390f35b60005481565b6000544210156100d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ce9061031e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015e9061038a565b60405180910390fd5b7fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b9347426040516101989291906103aa565b60405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610208573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000819050919050565b61024481610231565b82525050565b600060208201905061025f600083018461023b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061029082610265565b9050919050565b6102a081610285565b82525050565b60006020820190506102bb6000830184610297565b92915050565b600082825260208201905092915050565b7f596f752063616e27742077697468647261772079657400000000000000000000600082015250565b60006103086016836102c1565b9150610313826102d2565b602082019050919050565b60006020820190508181036000830152610337816102fb565b9050919050565b7f596f75206172656e277420746865206f776e6572000000000000000000000000600082015250565b60006103746014836102c1565b915061037f8261033e565b602082019050919050565b600060208201905081810360008301526103a381610367565b9050919050565b60006040820190506103bf600083018561023b565b6103cc602083018461023b565b939250505056fea26469706673582212202d2006ef26cbefcc4deab66c32f5ff5efb638f080c7490b6633879942caf232764736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100645780638da5cb5b1461006e575b600080fd5b61004e61008c565b60405161005b919061024a565b60405180910390f35b61006c610092565b005b61007661020b565b60405161008391906102a6565b60405180910390f35b60005481565b6000544210156100d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ce9061031e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015e9061038a565b60405180910390fd5b7fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b9347426040516101989291906103aa565b60405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610208573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000819050919050565b61024481610231565b82525050565b600060208201905061025f600083018461023b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061029082610265565b9050919050565b6102a081610285565b82525050565b60006020820190506102bb6000830184610297565b92915050565b600082825260208201905092915050565b7f596f752063616e27742077697468647261772079657400000000000000000000600082015250565b60006103086016836102c1565b9150610313826102d2565b602082019050919050565b60006020820190508181036000830152610337816102fb565b9050919050565b7f596f75206172656e277420746865206f776e6572000000000000000000000000600082015250565b60006103746014836102c1565b915061037f8261033e565b602082019050919050565b600060208201905081810360008301526103a381610367565b9050919050565b60006040820190506103bf600083018561023b565b6103cc602083018461023b565b939250505056fea26469706673582212202d2006ef26cbefcc4deab66c32f5ff5efb638f080c7490b6633879942caf232764736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/testament.sol/Testament.dbg.json b/artifacts/contracts/testament.sol/Testament.dbg.json new file mode 100644 index 0000000..f22e6f3 --- /dev/null +++ b/artifacts/contracts/testament.sol/Testament.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "..\\..\\build-info\\92444c75696ebbe6a5754629414e62ee.json" +} diff --git a/artifacts/contracts/testament.sol/Testament.json b/artifacts/contracts/testament.sol/Testament.json new file mode 100644 index 0000000..3b04fee --- /dev/null +++ b/artifacts/contracts/testament.sol/Testament.json @@ -0,0 +1,254 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Testament", + "sourceName": "contracts/testament.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "testamentId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "heir", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InheritanceClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "testamentId", + "type": "uint256" + } + ], + "name": "TestamentActivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "testamentId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lawyer", + "type": "address" + } + ], + "name": "TestamentCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_testamentId", + "type": "uint256" + } + ], + "name": "activateTestament", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_testamentId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_heir", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_percentage", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_documentHash", + "type": "string" + } + ], + "name": "addHeir", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_testamentId", + "type": "uint256" + } + ], + "name": "claimInheritance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lawyer", + "type": "address" + } + ], + "name": "createTestament", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_testamentId", + "type": "uint256" + } + ], + "name": "getHeirs", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "heirAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "percentage", + "type": "uint256" + }, + { + "internalType": "string", + "name": "documentHash", + "type": "string" + } + ], + "internalType": "struct Testament.Heir[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "testamentCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "testaments", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "lawyer", + "type": "address" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_testamentId", + "type": "uint256" + } + ], + "name": "viewInheritance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6080604052348015600f57600080fd5b506116a78061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639ccef9601161005b5780639ccef96014610125578063acf05ec814610141578063d1d3a04c14610172578063d5df76a31461019057610088565b80638508e1521461008d57806389a37331146100bd57806392ccb8ff146100ed5780639b6fc2e214610109575b600080fd5b6100a760048036038101906100a29190610b96565b6101c2565b6040516100b49190610bdc565b60405180910390f35b6100d760048036038101906100d29190610c23565b6102de565b6040516100e49190610e10565b60405180910390f35b61010760048036038101906101029190610c23565b610444565b005b610123600480360381019061011e9190610c23565b61061e565b005b61013f600480360381019061013a9190610f67565b61071f565b005b61015b60048036038101906101569190610c23565b6108a0565b604051610169929190611034565b60405180910390f35b61017a610aa7565b6040516101879190610bdc565b60405180910390f35b6101aa60048036038101906101a59190610c23565b610aad565b6040516101b99392919061108e565b60405180910390f35b6000600160008154809291906101d7906110f4565b9190505550600080600060015481526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160010160146101000a81548160ff0219169083151502179055506001547f9c6a0135230f01de660fe231c80c4d2e0d8d9ee407b4d0d628823617469b558333856040516102cb92919061113c565b60405180910390a2600154915050919050565b6060600080838152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b8282101561043957838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820180546103a890611194565b80601f01602080910402602001604051908101604052809291908181526020018280546103d490611194565b80156104215780601f106103f657610100808354040283529160200191610421565b820191906000526020600020905b81548152906001019060200180831161040457829003601f168201915b50505050508152505081526020019060010190610315565b505050509050919050565b60008082815260200190815260200160002060010160149054906101000a900460ff166104a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049d90611211565b60405180910390fd5b60005b600080838152602001908152602001600020600201805490508110156105df573373ffffffffffffffffffffffffffffffffffffffff16600080848152602001908152602001600020600201828154811061050757610506611231565b5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105d2576000806000848152602001908152602001600020600201828154811061057d5761057c611231565b5b9060005260206000209060030201600101549050827f1c2ddc0e217d2cae3c15684e7941984d5c180026e4c166e66361f5abce463ffd33836040516105c3929190611260565b60405180910390a2505061061b565b80806001019150506104a9565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610612906112d5565b60405180910390fd5b50565b60008082815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b890611367565b60405180910390fd5b600160008083815260200190815260200160002060010160146101000a81548160ff021916908315150217905550807f738789d97160bfe471f3c5d5da0280bb24b2ee025a7b5d68d05831f758c4602060405160405180910390a250565b60008085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b9906113d3565b60405180910390fd5b60008085815260200190815260200160002060020160405180606001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019081610897919061159f565b50505050505050565b6000606060005b60008085815260200190815260200160002060020180549050811015610a66573373ffffffffffffffffffffffffffffffffffffffff16600080868152602001908152602001600020600201828154811061090557610904611231565b5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610a5957600080858152602001908152602001600020600201818154811061097957610978611231565b5b90600052602060002090600302016001015460008086815260200190815260200160002060020182815481106109b2576109b1611231565b5b90600052602060002090600302016002018080546109cf90611194565b80601f01602080910402602001604051908101604052809291908181526020018280546109fb90611194565b8015610a485780601f10610a1d57610100808354040283529160200191610a48565b820191906000526020600020905b815481529060010190602001808311610a2b57829003601f168201915b505050505090509250925050610aa2565b80806001019150506108a7565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a99906112d5565b60405180910390fd5b915091565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900460ff16905083565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b6382610b38565b9050919050565b610b7381610b58565b8114610b7e57600080fd5b50565b600081359050610b9081610b6a565b92915050565b600060208284031215610bac57610bab610b2e565b5b6000610bba84828501610b81565b91505092915050565b6000819050919050565b610bd681610bc3565b82525050565b6000602082019050610bf16000830184610bcd565b92915050565b610c0081610bc3565b8114610c0b57600080fd5b50565b600081359050610c1d81610bf7565b92915050565b600060208284031215610c3957610c38610b2e565b5b6000610c4784828501610c0e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610c8581610b58565b82525050565b610c9481610bc3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610cd4578082015181840152602081019050610cb9565b60008484015250505050565b6000601f19601f8301169050919050565b6000610cfc82610c9a565b610d068185610ca5565b9350610d16818560208601610cb6565b610d1f81610ce0565b840191505092915050565b6000606083016000830151610d426000860182610c7c565b506020830151610d556020860182610c8b565b5060408301518482036040860152610d6d8282610cf1565b9150508091505092915050565b6000610d868383610d2a565b905092915050565b6000602082019050919050565b6000610da682610c50565b610db08185610c5b565b935083602082028501610dc285610c6c565b8060005b85811015610dfe5784840389528151610ddf8582610d7a565b9450610dea83610d8e565b925060208a01995050600181019050610dc6565b50829750879550505050505092915050565b60006020820190508181036000830152610e2a8184610d9b565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610e7482610ce0565b810181811067ffffffffffffffff82111715610e9357610e92610e3c565b5b80604052505050565b6000610ea6610b24565b9050610eb28282610e6b565b919050565b600067ffffffffffffffff821115610ed257610ed1610e3c565b5b610edb82610ce0565b9050602081019050919050565b82818337600083830152505050565b6000610f0a610f0584610eb7565b610e9c565b905082815260208101848484011115610f2657610f25610e37565b5b610f31848285610ee8565b509392505050565b600082601f830112610f4e57610f4d610e32565b5b8135610f5e848260208601610ef7565b91505092915050565b60008060008060808587031215610f8157610f80610b2e565b5b6000610f8f87828801610c0e565b9450506020610fa087828801610b81565b9350506040610fb187828801610c0e565b925050606085013567ffffffffffffffff811115610fd257610fd1610b33565b5b610fde87828801610f39565b91505092959194509250565b600082825260208201905092915050565b600061100682610c9a565b6110108185610fea565b9350611020818560208601610cb6565b61102981610ce0565b840191505092915050565b60006040820190506110496000830185610bcd565b818103602083015261105b8184610ffb565b90509392505050565b61106d81610b58565b82525050565b60008115159050919050565b61108881611073565b82525050565b60006060820190506110a36000830186611064565b6110b06020830185611064565b6110bd604083018461107f565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006110ff82610bc3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611131576111306110c5565b5b600182019050919050565b60006040820190506111516000830185611064565b61115e6020830184611064565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ac57607f821691505b6020821081036111bf576111be611165565b5b50919050565b7f54657374616d656e74206973206e6f7420616374697665000000000000000000600082015250565b60006111fb601783610fea565b9150611206826111c5565b602082019050919050565b6000602082019050818103600083015261122a816111ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506112756000830185611064565b6112826020830184610bcd565b9392505050565b7f596f7520617265206e6f74206c697374656420617320616e2068656972000000600082015250565b60006112bf601d83610fea565b91506112ca82611289565b602082019050919050565b600060208201905081810360008301526112ee816112b2565b9050919050565b7f4f6e6c792061737369676e6564206c61777965722063616e206163746976617460008201527f65207468652074657374616d656e740000000000000000000000000000000000602082015250565b6000611351602f83610fea565b915061135c826112f5565b604082019050919050565b6000602082019050818103600083015261138081611344565b9050919050565b7f4f6e6c79206f776e65722063616e206164642068656972730000000000000000600082015250565b60006113bd601883610fea565b91506113c882611387565b602082019050919050565b600060208201905081810360008301526113ec816113b0565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026114557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611418565b61145f8683611418565b95508019841693508086168417925050509392505050565b6000819050919050565b600061149c61149761149284610bc3565b611477565b610bc3565b9050919050565b6000819050919050565b6114b683611481565b6114ca6114c2826114a3565b848454611425565b825550505050565b600090565b6114df6114d2565b6114ea8184846114ad565b505050565b5b8181101561150e576115036000826114d7565b6001810190506114f0565b5050565b601f82111561155357611524816113f3565b61152d84611408565b8101602085101561153c578190505b61155061154885611408565b8301826114ef565b50505b505050565b600082821c905092915050565b600061157660001984600802611558565b1980831691505092915050565b600061158f8383611565565b9150826002028217905092915050565b6115a882610c9a565b67ffffffffffffffff8111156115c1576115c0610e3c565b5b6115cb8254611194565b6115d6828285611512565b600060209050601f83116001811461160957600084156115f7578287015190505b6116018582611583565b865550611669565b601f198416611617866113f3565b60005b8281101561163f5784890151825560018201915060208501945060208101905061161a565b8683101561165c5784890151611658601f891682611565565b8355505b6001600288020188555050505b50505050505056fea26469706673582212205a637a57988f7130ad23f2c7ae30008d881ea8a8b5311e172d71be9efed39c4564736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639ccef9601161005b5780639ccef96014610125578063acf05ec814610141578063d1d3a04c14610172578063d5df76a31461019057610088565b80638508e1521461008d57806389a37331146100bd57806392ccb8ff146100ed5780639b6fc2e214610109575b600080fd5b6100a760048036038101906100a29190610b96565b6101c2565b6040516100b49190610bdc565b60405180910390f35b6100d760048036038101906100d29190610c23565b6102de565b6040516100e49190610e10565b60405180910390f35b61010760048036038101906101029190610c23565b610444565b005b610123600480360381019061011e9190610c23565b61061e565b005b61013f600480360381019061013a9190610f67565b61071f565b005b61015b60048036038101906101569190610c23565b6108a0565b604051610169929190611034565b60405180910390f35b61017a610aa7565b6040516101879190610bdc565b60405180910390f35b6101aa60048036038101906101a59190610c23565b610aad565b6040516101b99392919061108e565b60405180910390f35b6000600160008154809291906101d7906110f4565b9190505550600080600060015481526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160010160146101000a81548160ff0219169083151502179055506001547f9c6a0135230f01de660fe231c80c4d2e0d8d9ee407b4d0d628823617469b558333856040516102cb92919061113c565b60405180910390a2600154915050919050565b6060600080838152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b8282101561043957838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820180546103a890611194565b80601f01602080910402602001604051908101604052809291908181526020018280546103d490611194565b80156104215780601f106103f657610100808354040283529160200191610421565b820191906000526020600020905b81548152906001019060200180831161040457829003601f168201915b50505050508152505081526020019060010190610315565b505050509050919050565b60008082815260200190815260200160002060010160149054906101000a900460ff166104a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049d90611211565b60405180910390fd5b60005b600080838152602001908152602001600020600201805490508110156105df573373ffffffffffffffffffffffffffffffffffffffff16600080848152602001908152602001600020600201828154811061050757610506611231565b5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105d2576000806000848152602001908152602001600020600201828154811061057d5761057c611231565b5b9060005260206000209060030201600101549050827f1c2ddc0e217d2cae3c15684e7941984d5c180026e4c166e66361f5abce463ffd33836040516105c3929190611260565b60405180910390a2505061061b565b80806001019150506104a9565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610612906112d5565b60405180910390fd5b50565b60008082815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b890611367565b60405180910390fd5b600160008083815260200190815260200160002060010160146101000a81548160ff021916908315150217905550807f738789d97160bfe471f3c5d5da0280bb24b2ee025a7b5d68d05831f758c4602060405160405180910390a250565b60008085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b9906113d3565b60405180910390fd5b60008085815260200190815260200160002060020160405180606001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019081610897919061159f565b50505050505050565b6000606060005b60008085815260200190815260200160002060020180549050811015610a66573373ffffffffffffffffffffffffffffffffffffffff16600080868152602001908152602001600020600201828154811061090557610904611231565b5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610a5957600080858152602001908152602001600020600201818154811061097957610978611231565b5b90600052602060002090600302016001015460008086815260200190815260200160002060020182815481106109b2576109b1611231565b5b90600052602060002090600302016002018080546109cf90611194565b80601f01602080910402602001604051908101604052809291908181526020018280546109fb90611194565b8015610a485780601f10610a1d57610100808354040283529160200191610a48565b820191906000526020600020905b815481529060010190602001808311610a2b57829003601f168201915b505050505090509250925050610aa2565b80806001019150506108a7565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a99906112d5565b60405180910390fd5b915091565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900460ff16905083565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b6382610b38565b9050919050565b610b7381610b58565b8114610b7e57600080fd5b50565b600081359050610b9081610b6a565b92915050565b600060208284031215610bac57610bab610b2e565b5b6000610bba84828501610b81565b91505092915050565b6000819050919050565b610bd681610bc3565b82525050565b6000602082019050610bf16000830184610bcd565b92915050565b610c0081610bc3565b8114610c0b57600080fd5b50565b600081359050610c1d81610bf7565b92915050565b600060208284031215610c3957610c38610b2e565b5b6000610c4784828501610c0e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610c8581610b58565b82525050565b610c9481610bc3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610cd4578082015181840152602081019050610cb9565b60008484015250505050565b6000601f19601f8301169050919050565b6000610cfc82610c9a565b610d068185610ca5565b9350610d16818560208601610cb6565b610d1f81610ce0565b840191505092915050565b6000606083016000830151610d426000860182610c7c565b506020830151610d556020860182610c8b565b5060408301518482036040860152610d6d8282610cf1565b9150508091505092915050565b6000610d868383610d2a565b905092915050565b6000602082019050919050565b6000610da682610c50565b610db08185610c5b565b935083602082028501610dc285610c6c565b8060005b85811015610dfe5784840389528151610ddf8582610d7a565b9450610dea83610d8e565b925060208a01995050600181019050610dc6565b50829750879550505050505092915050565b60006020820190508181036000830152610e2a8184610d9b565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610e7482610ce0565b810181811067ffffffffffffffff82111715610e9357610e92610e3c565b5b80604052505050565b6000610ea6610b24565b9050610eb28282610e6b565b919050565b600067ffffffffffffffff821115610ed257610ed1610e3c565b5b610edb82610ce0565b9050602081019050919050565b82818337600083830152505050565b6000610f0a610f0584610eb7565b610e9c565b905082815260208101848484011115610f2657610f25610e37565b5b610f31848285610ee8565b509392505050565b600082601f830112610f4e57610f4d610e32565b5b8135610f5e848260208601610ef7565b91505092915050565b60008060008060808587031215610f8157610f80610b2e565b5b6000610f8f87828801610c0e565b9450506020610fa087828801610b81565b9350506040610fb187828801610c0e565b925050606085013567ffffffffffffffff811115610fd257610fd1610b33565b5b610fde87828801610f39565b91505092959194509250565b600082825260208201905092915050565b600061100682610c9a565b6110108185610fea565b9350611020818560208601610cb6565b61102981610ce0565b840191505092915050565b60006040820190506110496000830185610bcd565b818103602083015261105b8184610ffb565b90509392505050565b61106d81610b58565b82525050565b60008115159050919050565b61108881611073565b82525050565b60006060820190506110a36000830186611064565b6110b06020830185611064565b6110bd604083018461107f565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006110ff82610bc3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611131576111306110c5565b5b600182019050919050565b60006040820190506111516000830185611064565b61115e6020830184611064565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ac57607f821691505b6020821081036111bf576111be611165565b5b50919050565b7f54657374616d656e74206973206e6f7420616374697665000000000000000000600082015250565b60006111fb601783610fea565b9150611206826111c5565b602082019050919050565b6000602082019050818103600083015261122a816111ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506112756000830185611064565b6112826020830184610bcd565b9392505050565b7f596f7520617265206e6f74206c697374656420617320616e2068656972000000600082015250565b60006112bf601d83610fea565b91506112ca82611289565b602082019050919050565b600060208201905081810360008301526112ee816112b2565b9050919050565b7f4f6e6c792061737369676e6564206c61777965722063616e206163746976617460008201527f65207468652074657374616d656e740000000000000000000000000000000000602082015250565b6000611351602f83610fea565b915061135c826112f5565b604082019050919050565b6000602082019050818103600083015261138081611344565b9050919050565b7f4f6e6c79206f776e65722063616e206164642068656972730000000000000000600082015250565b60006113bd601883610fea565b91506113c882611387565b602082019050919050565b600060208201905081810360008301526113ec816113b0565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026114557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611418565b61145f8683611418565b95508019841693508086168417925050509392505050565b6000819050919050565b600061149c61149761149284610bc3565b611477565b610bc3565b9050919050565b6000819050919050565b6114b683611481565b6114ca6114c2826114a3565b848454611425565b825550505050565b600090565b6114df6114d2565b6114ea8184846114ad565b505050565b5b8181101561150e576115036000826114d7565b6001810190506114f0565b5050565b601f82111561155357611524816113f3565b61152d84611408565b8101602085101561153c578190505b61155061154885611408565b8301826114ef565b50505b505050565b600082821c905092915050565b600061157660001984600802611558565b1980831691505092915050565b600061158f8383611565565b9150826002028217905092915050565b6115a882610c9a565b67ffffffffffffffff8111156115c1576115c0610e3c565b5b6115cb8254611194565b6115d6828285611512565b600060209050601f83116001811461160957600084156115f7578287015190505b6116018582611583565b865550611669565b601f198416611617866113f3565b60005b8281101561163f5784890151825560018201915060208501945060208101905061161a565b8683101561165c5784890151611658601f891682611565565b8355505b6001600288020188555050505b50505050505056fea26469706673582212205a637a57988f7130ad23f2c7ae30008d881ea8a8b5311e172d71be9efed39c4564736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json new file mode 100644 index 0000000..533cf29 --- /dev/null +++ b/cache/solidity-files-cache.json @@ -0,0 +1,77 @@ +{ + "_format": "hh-sol-cache-2", + "files": { + "C:\\Users\\Admin\\Programiranje\\ZkInheritance\\contracts\\Lock.sol": { + "lastModificationDate": 1739110046782, + "contentHash": "7eee587c347fe6b1de50c96688cb9477", + "sourceName": "contracts/Lock.sol", + "solcConfig": { + "version": "0.8.28", + "settings": { + "evmVersion": "paris", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.28" + ], + "artifacts": [ + "Lock" + ] + }, + "C:\\Users\\Admin\\Programiranje\\ZkInheritance\\contracts\\testament.sol": { + "lastModificationDate": 1739112477069, + "contentHash": "ec864fb0d7c84a0b5ce46dcd13dcef5c", + "sourceName": "contracts/testament.sol", + "solcConfig": { + "version": "0.8.28", + "settings": { + "evmVersion": "paris", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Testament" + ] + } + } +} diff --git a/contracts/Lock.sol b/contracts/Lock.sol new file mode 100644 index 0000000..2f385f7 --- /dev/null +++ b/contracts/Lock.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.28; + +// Uncomment this line to use console.log +// import "hardhat/console.sol"; + +contract Lock { + uint public unlockTime; + address payable public owner; + + event Withdrawal(uint amount, uint when); + + constructor(uint _unlockTime) payable { + require( + block.timestamp < _unlockTime, + "Unlock time should be in the future" + ); + + unlockTime = _unlockTime; + owner = payable(msg.sender); + } + + function withdraw() public { + // Uncomment this line, and the import of "hardhat/console.sol", to print a log in your terminal + // console.log("Unlock time is %o and block timestamp is %o", unlockTime, block.timestamp); + + require(block.timestamp >= unlockTime, "You can't withdraw yet"); + require(msg.sender == owner, "You aren't the owner"); + + emit Withdrawal(address(this).balance, block.timestamp); + + owner.transfer(address(this).balance); + } +} diff --git a/contracts/testament.sol b/contracts/testament.sol new file mode 100644 index 0000000..0a5120a --- /dev/null +++ b/contracts/testament.sol @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +contract Testament { + struct Heir { + address heirAddress; + uint256 percentage; + string documentHash; + } + + struct TestamentData { + address owner; + address lawyer; + bool isActive; + Heir[] heirs; + } + + mapping(uint256 => TestamentData) public testaments; + uint256 public testamentCount; + + event TestamentCreated(uint256 indexed testamentId, address owner, address lawyer); + event TestamentActivated(uint256 indexed testamentId); + event InheritanceClaimed(uint256 indexed testamentId, address heir, uint256 amount); + + constructor() {} + + function createTestament(address _lawyer) external returns (uint256) { + testamentCount++; + TestamentData storage newTestament = testaments[testamentCount]; + newTestament.owner = msg.sender; + newTestament.lawyer = _lawyer; + newTestament.isActive = false; + + emit TestamentCreated(testamentCount, msg.sender, _lawyer); + return testamentCount; + } + + function addHeir(uint256 _testamentId, address _heir, uint256 _percentage, string memory _documentHash) external { + require(msg.sender == testaments[_testamentId].owner, "Only owner can add heirs"); + testaments[_testamentId].heirs.push(Heir(_heir, _percentage, _documentHash)); + } + + function getHeirs(uint256 _testamentId) external view returns (Heir[] memory) { + return testaments[_testamentId].heirs; + } + + + function activateTestament(uint256 _testamentId) external { + require(msg.sender == testaments[_testamentId].lawyer, "Only assigned lawyer can activate the testament"); + testaments[_testamentId].isActive = true; + emit TestamentActivated(_testamentId); + } + + // omogućava nasledniku da vidi šta nasledjuje pre aktivacije + function viewInheritance(uint256 _testamentId) external view returns (uint256, string memory) { + for (uint256 i = 0; i < testaments[_testamentId].heirs.length; i++) { + if (testaments[_testamentId].heirs[i].heirAddress == msg.sender) { + return ( + testaments[_testamentId].heirs[i].percentage, + testaments[_testamentId].heirs[i].documentHash + ); + } + } + revert("You are not listed as an heir"); + } + + // naslednik može povući sredstva tek nakon aktivacije testamenta + function claimInheritance(uint256 _testamentId) external { + require(testaments[_testamentId].isActive, "Testament is not active"); + + for (uint256 i = 0; i < testaments[_testamentId].heirs.length; i++) { + if (testaments[_testamentId].heirs[i].heirAddress == msg.sender) { + uint256 amount = testaments[_testamentId].heirs[i].percentage; + emit InheritanceClaimed(_testamentId, msg.sender, amount); + return; + } + } + revert("You are not listed as an heir"); + } +} diff --git a/hardhat.config.js b/hardhat.config.js new file mode 100644 index 0000000..b63f0c2 --- /dev/null +++ b/hardhat.config.js @@ -0,0 +1,6 @@ +require("@nomicfoundation/hardhat-toolbox"); + +/** @type import('hardhat/config').HardhatUserConfig */ +module.exports = { + solidity: "0.8.28", +}; diff --git a/ignition/modules/Lock.js b/ignition/modules/Lock.js new file mode 100644 index 0000000..32c7cd4 --- /dev/null +++ b/ignition/modules/Lock.js @@ -0,0 +1,18 @@ +// This setup uses Hardhat Ignition to manage smart contract deployments. +// Learn more about it at https://hardhat.org/ignition + +const { buildModule } = require("@nomicfoundation/hardhat-ignition/modules"); + +const JAN_1ST_2030 = 1893456000; +const ONE_GWEI = 1_000_000_000n; + +module.exports = buildModule("LockModule", (m) => { + const unlockTime = m.getParameter("unlockTime", JAN_1ST_2030); + const lockedAmount = m.getParameter("lockedAmount", ONE_GWEI); + + const lock = m.contract("Lock", [unlockTime], { + value: lockedAmount, + }); + + return { lock }; +}); diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index a69e144..0000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "ZkInheritance", - "lockfileVersion": 3, - "requires": true, - "packages": { - "node_modules/circomlib": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/circomlib/-/circomlib-2.0.5.tgz", - "integrity": "sha512-O7NQ8OS+J4eshBuoy36z/TwQU0YHw8W3zxZcs4hVwpEll3e4hDm3mgkIPqItN8FDeLEKZFK3YeT/+k8TiLF3/A==", - "license": "GPL-3.0" - } - } -} diff --git a/node_modules/circomlib/.vscode/launch.json b/node_modules/circomlib/.vscode/launch.json deleted file mode 100644 index 956c48b..0000000 --- a/node_modules/circomlib/.vscode/launch.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "pwa-node", - "request": "launch", - "name": "Launch Program", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/calcoptimizedposeidonconsts/test_poseidon.js", - "cwd": "${workspaceFolder}/calcoptimizedposeidonconsts" - }, - { - "type": "pwa-node", - "request": "launch", - "name": "Tests", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", - "cwd": "${workspaceFolder}", - "args": ["test/smtverifier.js"] - }, - { - "type": "pwa-node", - "request": "launch", - "name": "Test Poseidon", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", - "cwd": "${workspaceFolder}", - "args": ["test/poseidoncircuit.js"] - }, - { - "type": "pwa-node", - "request": "launch", - "name": "Test binsum", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", - "cwd": "${workspaceFolder}", - "args": ["test/binsum.js"] - }, - { - "type": "pwa-node", - "request": "launch", - "name": "Test babyjub", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", - "cwd": "${workspaceFolder}", - "args": ["test/babyjub.js"] - } - - ] -} \ No newline at end of file diff --git a/node_modules/circomlib/README.md b/node_modules/circomlib/README.md deleted file mode 100644 index a56c676..0000000 --- a/node_modules/circomlib/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# CircomLib - -## Description - -- This repository contains a library of circuit templates. -- All files are copyrighted under 2018 0KIMS association and part of the free software [circom](https://github.com/iden3/circom) (Zero Knowledge Circuit Compiler). -- You can read more about the circom language in [the circom documentation webpage](https://docs.circom.io/). - -## Organisation - -This respository contains 5 folders: -- `circuits`: it contains the implementation of different cryptographic primitives in circom language. -- `calcpedersenbases`: set of functions in JavaScript used to find a set of points in [Baby Jubjub](https://github.com/barryWhiteHat/baby_jubjub) elliptic curve that serve as basis for the [Pedersen Hash](https://github.com/zcash/zcash/issues/2234). -- `doc`: it contains some circuit schemes in ASCII (must be opened with Monodraw, an ASCII art editor for Mac). -- `src`: it contains similar implementation of circuits in JavaScript. -- `test`: tests. - -A description of the specific circuit templates for the `circuit` folder will be soon updated. diff --git a/node_modules/circomlib/circuits/README.md b/node_modules/circomlib/circuits/README.md deleted file mode 100644 index 40a833e..0000000 --- a/node_modules/circomlib/circuits/README.md +++ /dev/null @@ -1,830 +0,0 @@ -# CircomLib/Circuits - -## Description - -- This folder contains circuit templates for standard operations and many cryptographic primitives. -- Below you can find specifications of each function. In the representation of elements, there are three tyes: - - Binary - - String - - Field element (the field is specified in each case. We consider 2 possible fields: Fp and Fr, where p... and r... .) - -## Table of Contents - -[TOC] - -## Jordi - -* compconstant - Returns 1 if `in` (expanded to binary array) > `ct` -* aliascheck - check if `in` (expanded to binary array) oveflowed its 254 bits (<= -1) -* babyjub - twisted Edwards curve 168700.x^2 + y^2 = 1 + 168696.x^2.y^2 - * BabyAdd - (`xout`,`yout`) = (`x1`,`y1`) + (`x2`,`y2`) - * BabyDbl - (`xout`,`yout`) = 2*(`x`,`y`) - * BabyCheck - check that (`x`,`y`) is on the curve -* binsub - binary subtraction -* gates - logical gates -* mimc - SNARK-friendly hash Minimal Multiplicative Complexity. - * https://eprint.iacr.org/2016/492.pdf - * zcash/zcash#2233 -* smt - Sparse Merkle Tree - * https://ethresear.ch/t/optimizing-sparse-merkle-trees/3751 -* montgomery https://en.wikipedia.org/wiki/Montgomery_curve - -## Circuits - -### sha256 - -Folder containing the implementation of sha256 hash circuit. - -### smt - -Folder containing the circuit implementation of Sparse Merkle Trees. - -### aliascheck - -- `AliasCheck()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### babyjub - -Arithmetic on [Baby Jubjub elliptic curve](https://github.com/barryWhiteHat/baby_jubjub) in twisted Edwards form. (TODO: Expose here the characteristics of the curve?) - - -- `BabyAdd()` - - - DESCRIPTION - - It adds two points on the Baby Jubjub curve. More specifically, given two points P1 = (`x1`, `y1`) and P2 = (`x2`, `y2`) it returns a point P3 = (`xout`, `yout`) such that - - (`xout`, `yout`) = (`x1`,`y1`) + (`x2`,`y2`) - = ((`x1y2`+`y1x2`)/(1+`dx1x2y1y2`)),(`y1y2`-`ax1x2`)/(1-`dx1x2y1y2`)) - - - SCHEMA - ``` - var a var d - | | - | | - ______v_________v_______ - input x1 ----> | | - input y1 ----> | BabyAdd() | ----> output xout - input x2 ----> | | ----> output yout - input y2 ----> |________________________| - ``` - - - INPUTS - - | Input | Representation | Description | | - | ------------- | ------------- | ------------- | ------------- | - | `x1` | Bigint | Field element of Fp | First coordinate of a point (x1, y1) on E. | - | `y1` | Bigint | Field element of Fp | Second coordinate of a point (x1, y1) on E. | - | `x2` | Bigint | Field element of Fp | First coordinate of a point (x2, y2) on E. | - | `y2` | Bigint | Field element of Fp | Second coordinate of a point (x2, y2) on E. | - - Requirement: at least `x1`!=`x2` or `y1`!=`y2`. - - - OUTPUT - - | Input | Representation | Description | | - | ------------- | ------------- | ------------- | ------------- | - | `xout` | Bigint | Field element of Fp | First coordinate of the addition point (xout, yout) = (x1, y1) + (x2, y2). | - | `yout` | Bigint | Field element of Fp | Second coordinate of the addition point (xout, yout) = (x1, y1) + (x2, y2). | - - - BENCHMARKS (constraints) - - - EXAMPLE - -- `BabyDbl()` - - DESCRIPTION : doubles a point (`xout`,`yout`) = 2*(`x`,`y`). - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `BabyCheck()` - - - DESCRIPTION : checks if a given point is in the curve. - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `BabyPbk()` - - - DESCRIPTION: : given a private key, it returns the associated public key. - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - - -### binsub - -- `BinSub(n)` - - - DESCRIPTION: binary substraction. - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### binsum - -- `nbits(a)` - - - DESCRIPTION : binary sum. - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `BinSum(n, ops)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### bitify - -- `Num2Bits()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Num2Bits_strict()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Bits2Num()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Bits2Num_strict()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Num2BitsNeg()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### comparators - -- `IsZero() ` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `IsEqual()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `ForceEqualIfEnabled()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `LessThan()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `GreaterThan()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `GreaterEqThan()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### compconstant - -- `CompConstant(ct)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### eddsa - -Edwards Digital Signature Algorithm in Baby Jubjbub (link a eddsa) - -- `EdDSAVerifier(n)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### eddsamimc - -- `EdDSAMiMCVerifier()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### eddsamimcsponge - -- `EdDSAMiMCSpongeVerifier()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### eddsaposeidon - -- `EdDSAPoseidonVerifier()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### escalarmul - -- `EscalarMulWindow(base, k)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `EscalarMul(n, base)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### escalarmulany - -- `Multiplexor2()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `BitElementMulAny()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `SegmentMulAny(n)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `EscalarMulAny(n)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### escalarmulfix - -- `WindowMulFix()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `SegmentMulFix(nWindows)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `EscalarMulFix(n, BASE)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### escalarmulw4table - -- `pointAdd` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `EscalarMulW4Table` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### gates - -- `XOR` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `AND` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `OR` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `NOT` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `NAND` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `NOR` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `MultiAND` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### mimc - -Implementation of MiMC-7 hash in Fp being... (link to description of the hash) - -- `MiMC7(nrounds)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `MultiMiMC7(nInputs, nRounds)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### mimcsponge - -- `MiMCSponge(nInputs, nRounds, nOutputs)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `MiMCFeistel(nrounds)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### montgomery - -- `Edwards2Montgomery()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Montgomery2Edwards()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `MontgomeryAdd()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `MontgomeryDouble()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### multiplexer - -- `log2(a)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `EscalarProduct(w)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Decoder(w)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Multiplexer(wIn, nIn)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### mux1 - -- `MultiMux1(n)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Mux1()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### mux2 - -- `MultiMux2(n)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Mux2()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### mux3 - -- `MultiMux3(n)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Mux3()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### mux4 - -- `MultiMux4(n)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Mux4()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### pedersen_old - -Old version of the Pedersen hash (do not use any -more?). - -### pedersen - -- `Window4()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Segment(nWindows)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Pedersen(n)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### pointbits - -- `sqrt(n)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Bits2Point()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Bits2Point_Strict()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Point2Bits` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Point2Bits_Strict` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### poseidon - -Implementation of Poseidon hash function (LINK) - -- `Sigma()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Ark(t, C, r)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Mix(t, M)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -- `Poseidon(nInputs)` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### sign - -- `Sign()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE - -### switcher - -- `Switcher()` - - - DESCRIPTION - - SCHEMA - - INPUT - - OUTPUT - - BENCHMARKS - - EXAMPLE diff --git a/node_modules/circomlib/circuits/aliascheck.circom b/node_modules/circomlib/circuits/aliascheck.circom deleted file mode 100644 index 1c5a5f8..0000000 --- a/node_modules/circomlib/circuits/aliascheck.circom +++ /dev/null @@ -1,33 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "compconstant.circom"; - - -template AliasCheck() { - - signal input in[254]; - - component compConstant = CompConstant(-1); - - for (var i=0; i<254; i++) in[i] ==> compConstant.in[i]; - - compConstant.out === 0; -} diff --git a/node_modules/circomlib/circuits/babyjub.circom b/node_modules/circomlib/circuits/babyjub.circom deleted file mode 100644 index 36810fe..0000000 --- a/node_modules/circomlib/circuits/babyjub.circom +++ /dev/null @@ -1,107 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "bitify.circom"; -include "escalarmulfix.circom"; - -template BabyAdd() { - signal input x1; - signal input y1; - signal input x2; - signal input y2; - signal output xout; - signal output yout; - - signal beta; - signal gamma; - signal delta; - signal tau; - - var a = 168700; - var d = 168696; - - beta <== x1*y2; - gamma <== y1*x2; - delta <== (-a*x1+y1)*(x2 + y2); - tau <== beta * gamma; - - xout <-- (beta + gamma) / (1+ d*tau); - (1+ d*tau) * xout === (beta + gamma); - - yout <-- (delta + a*beta - gamma) / (1-d*tau); - (1-d*tau)*yout === (delta + a*beta - gamma); -} - -template BabyDbl() { - signal input x; - signal input y; - signal output xout; - signal output yout; - - component adder = BabyAdd(); - adder.x1 <== x; - adder.y1 <== y; - adder.x2 <== x; - adder.y2 <== y; - - adder.xout ==> xout; - adder.yout ==> yout; -} - - -template BabyCheck() { - signal input x; - signal input y; - - signal x2; - signal y2; - - var a = 168700; - var d = 168696; - - x2 <== x*x; - y2 <== y*y; - - a*x2 + y2 === 1 + d*x2*y2; -} - -// Extracts the public key from private key -template BabyPbk() { - signal input in; - signal output Ax; - signal output Ay; - - var BASE8[2] = [ - 5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203 - ]; - - component pvkBits = Num2Bits(253); - pvkBits.in <== in; - - component mulFix = EscalarMulFix(253, BASE8); - - var i; - for (i=0; i<253; i++) { - mulFix.e[i] <== pvkBits.out[i]; - } - Ax <== mulFix.out[0]; - Ay <== mulFix.out[1]; -} diff --git a/node_modules/circomlib/circuits/binsub.circom b/node_modules/circomlib/circuits/binsub.circom deleted file mode 100644 index a20fbf8..0000000 --- a/node_modules/circomlib/circuits/binsub.circom +++ /dev/null @@ -1,74 +0,0 @@ - /* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* -This component creates a binary substraction. - - -Main Constraint: - (in[0][0] * 2^0 + in[0][1] * 2^1 + ..... + in[0][n-1] * 2^(n-1)) + - + 2^n - - (in[1][0] * 2^0 + in[1][1] * 2^1 + ..... + in[1][n-1] * 2^(n-1)) - === - out[0] * 2^0 + out[1] * 2^1 + + out[n-1] *2^(n-1) + aux - - - out[0] * (out[0] - 1) === 0 - out[1] * (out[0] - 1) === 0 - . - . - . - out[n-1] * (out[n-1] - 1) === 0 - aux * (aux-1) == 0 - -*/ -pragma circom 2.0.0; - -template BinSub(n) { - signal input in[2][n]; - signal output out[n]; - - signal aux; - - var lin = 2**n; - var lout = 0; - - var i; - - for (i=0; i> i) & 1; - - // Ensure out is binary - out[i] * (out[i] - 1) === 0; - - lout = lout + out[i]*(2**i); - } - - aux <-- (lin >> n) & 1; - aux*(aux-1) === 0; - lout = lout + aux*(2**n); - - // Ensure the sum; - lin === lout; -} diff --git a/node_modules/circomlib/circuits/binsum.circom b/node_modules/circomlib/circuits/binsum.circom deleted file mode 100644 index 28c7fcc..0000000 --- a/node_modules/circomlib/circuits/binsum.circom +++ /dev/null @@ -1,101 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* - -Binary Sum -========== - -This component creates a binary sum componet of ops operands and n bits each operand. - -e is Number of carries: Depends on the number of operands in the input. - -Main Constraint: - in[0][0] * 2^0 + in[0][1] * 2^1 + ..... + in[0][n-1] * 2^(n-1) + - + in[1][0] * 2^0 + in[1][1] * 2^1 + ..... + in[1][n-1] * 2^(n-1) + - + .. - + in[ops-1][0] * 2^0 + in[ops-1][1] * 2^1 + ..... + in[ops-1][n-1] * 2^(n-1) + - === - out[0] * 2^0 + out[1] * 2^1 + + out[n+e-1] *2(n+e-1) - -To waranty binary outputs: - - out[0] * (out[0] - 1) === 0 - out[1] * (out[0] - 1) === 0 - . - . - . - out[n+e-1] * (out[n+e-1] - 1) == 0 - - */ - - -/* - This function calculates the number of extra bits in the output to do the full sum. - */ - pragma circom 2.0.0; - -function nbits(a) { - var n = 1; - var r = 0; - while (n-1> k) & 1; - - // Ensure out is binary - out[k] * (out[k] - 1) === 0; - - lout += out[k] * e2; - - e2 = e2+e2; - } - - // Ensure the sum; - - lin === lout; -} diff --git a/node_modules/circomlib/circuits/bitify.circom b/node_modules/circomlib/circuits/bitify.circom deleted file mode 100644 index bfdd4e8..0000000 --- a/node_modules/circomlib/circuits/bitify.circom +++ /dev/null @@ -1,106 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "comparators.circom"; -include "aliascheck.circom"; - - -template Num2Bits(n) { - signal input in; - signal output out[n]; - var lc1=0; - - var e2=1; - for (var i = 0; i> i) & 1; - out[i] * (out[i] -1 ) === 0; - lc1 += out[i] * e2; - e2 = e2+e2; - } - - lc1 === in; -} - -template Num2Bits_strict() { - signal input in; - signal output out[254]; - - component aliasCheck = AliasCheck(); - component n2b = Num2Bits(254); - in ==> n2b.in; - - for (var i=0; i<254; i++) { - n2b.out[i] ==> out[i]; - n2b.out[i] ==> aliasCheck.in[i]; - } -} - -template Bits2Num(n) { - signal input in[n]; - signal output out; - var lc1=0; - - var e2 = 1; - for (var i = 0; i out; -} - -template Bits2Num_strict() { - signal input in[254]; - signal output out; - - component aliasCheck = AliasCheck(); - component b2n = Bits2Num(254); - - for (var i=0; i<254; i++) { - in[i] ==> b2n.in[i]; - in[i] ==> aliasCheck.in[i]; - } - - b2n.out ==> out; -} - -template Num2BitsNeg(n) { - signal input in; - signal output out[n]; - var lc1=0; - - component isZero; - - isZero = IsZero(); - - var neg = n == 0 ? 0 : 2**n - in; - - for (var i = 0; i> i) & 1; - out[i] * (out[i] -1 ) === 0; - lc1 += out[i] * 2**i; - } - - in ==> isZero.in; - - - - lc1 + isZero.out * 2**n === 2**n - in; -} diff --git a/node_modules/circomlib/circuits/comparators.circom b/node_modules/circomlib/circuits/comparators.circom deleted file mode 100644 index bfed032..0000000 --- a/node_modules/circomlib/circuits/comparators.circom +++ /dev/null @@ -1,141 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "bitify.circom"; -include "binsum.circom"; - -template IsZero() { - signal input in; - signal output out; - - signal inv; - - inv <-- in!=0 ? 1/in : 0; - - out <== -in*inv +1; - in*out === 0; -} - - -template IsEqual() { - signal input in[2]; - signal output out; - - component isz = IsZero(); - - in[1] - in[0] ==> isz.in; - - isz.out ==> out; -} - -template ForceEqualIfEnabled() { - signal input enabled; - signal input in[2]; - - component isz = IsZero(); - - in[1] - in[0] ==> isz.in; - - (1 - isz.out)*enabled === 0; -} - -/* -// N is the number of bits the input have. -// The MSF is the sign bit. -template LessThan(n) { - signal input in[2]; - signal output out; - - component num2Bits0; - component num2Bits1; - - component adder; - - adder = BinSum(n, 2); - - num2Bits0 = Num2Bits(n); - num2Bits1 = Num2BitsNeg(n); - - in[0] ==> num2Bits0.in; - in[1] ==> num2Bits1.in; - - var i; - for (i=0;i adder.in[0][i]; - num2Bits1.out[i] ==> adder.in[1][i]; - } - - adder.out[n-1] ==> out; -} -*/ - -template LessThan(n) { - assert(n <= 252); - signal input in[2]; - signal output out; - - component n2b = Num2Bits(n+1); - - n2b.in <== in[0]+ (1< out; -} - -// N is the number of bits the input have. -// The MSF is the sign bit. -template GreaterThan(n) { - signal input in[2]; - signal output out; - - component lt = LessThan(n); - - lt.in[0] <== in[1]; - lt.in[1] <== in[0]; - lt.out ==> out; -} - -// N is the number of bits the input have. -// The MSF is the sign bit. -template GreaterEqThan(n) { - signal input in[2]; - signal output out; - - component lt = LessThan(n); - - lt.in[0] <== in[1]; - lt.in[1] <== in[0]+1; - lt.out ==> out; -} - diff --git a/node_modules/circomlib/circuits/compconstant.circom b/node_modules/circomlib/circuits/compconstant.circom deleted file mode 100644 index 1bca83a..0000000 --- a/node_modules/circomlib/circuits/compconstant.circom +++ /dev/null @@ -1,74 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "bitify.circom"; - -// Returns 1 if in (in binary) > ct - -template CompConstant(ct) { - signal input in[254]; - signal output out; - - signal parts[127]; - signal sout; - - var clsb; - var cmsb; - var slsb; - var smsb; - - var sum=0; - - var b = (1 << 128) -1; - var a = 1; - var e = 1; - var i; - - for (i=0;i<127; i++) { - clsb = (ct >> (i*2)) & 1; - cmsb = (ct >> (i*2+1)) & 1; - slsb = in[i*2]; - smsb = in[i*2+1]; - - if ((cmsb==0)&&(clsb==0)) { - parts[i] <== -b*smsb*slsb + b*smsb + b*slsb; - } else if ((cmsb==0)&&(clsb==1)) { - parts[i] <== a*smsb*slsb - a*slsb + b*smsb - a*smsb + a; - } else if ((cmsb==1)&&(clsb==0)) { - parts[i] <== b*smsb*slsb - a*smsb + a; - } else { - parts[i] <== -a*smsb*slsb + a; - } - - sum = sum + parts[i]; - - b = b -e; - a = a +e; - e = e*2; - } - - sout <== sum; - - component num2bits = Num2Bits(135); - - num2bits.in <== sout; - - out <== num2bits.out[127]; -} diff --git a/node_modules/circomlib/circuits/eddsa.circom b/node_modules/circomlib/circuits/eddsa.circom deleted file mode 100644 index 04b5f87..0000000 --- a/node_modules/circomlib/circuits/eddsa.circom +++ /dev/null @@ -1,139 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "compconstant.circom"; -include "pointbits.circom"; -include "pedersen.circom"; -include "escalarmulany.circom"; -include "escalarmulfix.circom"; - -template EdDSAVerifier(n) { - signal input msg[n]; - - signal input A[256]; - signal input R8[256]; - signal input S[256]; - - signal Ax; - signal Ay; - - signal R8x; - signal R8y; - - var i; - -// Ensure S compConstant.in[i]; - } - compConstant.out === 0; - S[254] === 0; - S[255] === 0; - -// Convert A to Field elements (And verify A) - - component bits2pointA = Bits2Point_Strict(); - - for (i=0; i<256; i++) { - bits2pointA.in[i] <== A[i]; - } - Ax <== bits2pointA.out[0]; - Ay <== bits2pointA.out[1]; - -// Convert R8 to Field elements (And verify R8) - - component bits2pointR8 = Bits2Point_Strict(); - - for (i=0; i<256; i++) { - bits2pointR8.in[i] <== R8[i]; - } - R8x <== bits2pointR8.out[0]; - R8y <== bits2pointR8.out[1]; - -// Calculate the h = H(R,A, msg) - - component hash = Pedersen(512+n); - - for (i=0; i<256; i++) { - hash.in[i] <== R8[i]; - hash.in[256+i] <== A[i]; - } - for (i=0; i. -*/ -pragma circom 2.0.0; - -include "compconstant.circom"; -include "pointbits.circom"; -include "mimc.circom"; -include "bitify.circom"; -include "escalarmulany.circom"; -include "escalarmulfix.circom"; - -template EdDSAMiMCVerifier() { - signal input enabled; - signal input Ax; - signal input Ay; - - signal input S; - signal input R8x; - signal input R8y; - - signal input M; - - var i; - -// Ensure S compConstant.in[i]; - } - compConstant.in[253] <== 0; - compConstant.out === 0; - -// Calculate the h = H(R,A, msg) - - component hash = MultiMiMC7(5, 91); - hash.in[0] <== R8x; - hash.in[1] <== R8y; - hash.in[2] <== Ax; - hash.in[3] <== Ay; - hash.in[4] <== M; - hash.k <== 0; - - component h2bits = Num2Bits_strict(); - h2bits.in <== hash.out; - -// Calculate second part of the right side: right2 = h*8*A - - // Multiply by 8 by adding it 3 times. This also ensure that the result is in - // the subgroup. - component dbl1 = BabyDbl(); - dbl1.x <== Ax; - dbl1.y <== Ay; - component dbl2 = BabyDbl(); - dbl2.x <== dbl1.xout; - dbl2.y <== dbl1.yout; - component dbl3 = BabyDbl(); - dbl3.x <== dbl2.xout; - dbl3.y <== dbl2.yout; - - // We check that A is not zero. - component isZero = IsZero(); - isZero.in <== dbl3.x; - isZero.out === 0; - - component mulAny = EscalarMulAny(254); - for (i=0; i<254; i++) { - mulAny.e[i] <== h2bits.out[i]; - } - mulAny.p[0] <== dbl3.xout; - mulAny.p[1] <== dbl3.yout; - - -// Compute the right side: right = R8 + right2 - - component addRight = BabyAdd(); - addRight.x1 <== R8x; - addRight.y1 <== R8y; - addRight.x2 <== mulAny.out[0]; - addRight.y2 <== mulAny.out[1]; - -// Calculate left side of equation left = S*B8 - - var BASE8[2] = [ - 5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203 - ]; - component mulFix = EscalarMulFix(253, BASE8); - for (i=0; i<253; i++) { - mulFix.e[i] <== snum2bits.out[i]; - } - -// Do the comparation left == right if enabled; - - component eqCheckX = ForceEqualIfEnabled(); - eqCheckX.enabled <== enabled; - eqCheckX.in[0] <== mulFix.out[0]; - eqCheckX.in[1] <== addRight.xout; - - component eqCheckY = ForceEqualIfEnabled(); - eqCheckY.enabled <== enabled; - eqCheckY.in[0] <== mulFix.out[1]; - eqCheckY.in[1] <== addRight.yout; -} diff --git a/node_modules/circomlib/circuits/eddsamimcsponge.circom b/node_modules/circomlib/circuits/eddsamimcsponge.circom deleted file mode 100644 index 3267c45..0000000 --- a/node_modules/circomlib/circuits/eddsamimcsponge.circom +++ /dev/null @@ -1,124 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "compconstant.circom"; -include "pointbits.circom"; -include "mimcsponge.circom"; -include "bitify.circom"; -include "escalarmulany.circom"; -include "escalarmulfix.circom"; - -template EdDSAMiMCSpongeVerifier() { - signal input enabled; - signal input Ax; - signal input Ay; - - signal input S; - signal input R8x; - signal input R8y; - - signal input M; - - var i; - -// Ensure S compConstant.in[i]; - } - compConstant.in[253] <== 0; - compConstant.out === 0; - -// Calculate the h = H(R,A, msg) - - component hash = MiMCSponge(5, 220, 1); - hash.ins[0] <== R8x; - hash.ins[1] <== R8y; - hash.ins[2] <== Ax; - hash.ins[3] <== Ay; - hash.ins[4] <== M; - hash.k <== 0; - - component h2bits = Num2Bits_strict(); - h2bits.in <== hash.outs[0]; - -// Calculate second part of the right side: right2 = h*8*A - - // Multiply by 8 by adding it 3 times. This also ensure that the result is in - // the subgroup. - component dbl1 = BabyDbl(); - dbl1.x <== Ax; - dbl1.y <== Ay; - component dbl2 = BabyDbl(); - dbl2.x <== dbl1.xout; - dbl2.y <== dbl1.yout; - component dbl3 = BabyDbl(); - dbl3.x <== dbl2.xout; - dbl3.y <== dbl2.yout; - - // We check that A is not zero. - component isZero = IsZero(); - isZero.in <== dbl3.x; - isZero.out === 0; - - component mulAny = EscalarMulAny(254); - for (i=0; i<254; i++) { - mulAny.e[i] <== h2bits.out[i]; - } - mulAny.p[0] <== dbl3.xout; - mulAny.p[1] <== dbl3.yout; - - -// Compute the right side: right = R8 + right2 - - component addRight = BabyAdd(); - addRight.x1 <== R8x; - addRight.y1 <== R8y; - addRight.x2 <== mulAny.out[0]; - addRight.y2 <== mulAny.out[1]; - -// Calculate left side of equation left = S*B8 - - var BASE8[2] = [ - 5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203 - ]; - component mulFix = EscalarMulFix(253, BASE8); - for (i=0; i<253; i++) { - mulFix.e[i] <== snum2bits.out[i]; - } - -// Do the comparation left == right if enabled; - - component eqCheckX = ForceEqualIfEnabled(); - eqCheckX.enabled <== enabled; - eqCheckX.in[0] <== mulFix.out[0]; - eqCheckX.in[1] <== addRight.xout; - - component eqCheckY = ForceEqualIfEnabled(); - eqCheckY.enabled <== enabled; - eqCheckY.in[0] <== mulFix.out[1]; - eqCheckY.in[1] <== addRight.yout; -} diff --git a/node_modules/circomlib/circuits/eddsaposeidon.circom b/node_modules/circomlib/circuits/eddsaposeidon.circom deleted file mode 100644 index 1fce1f3..0000000 --- a/node_modules/circomlib/circuits/eddsaposeidon.circom +++ /dev/null @@ -1,123 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "compconstant.circom"; -include "poseidon.circom"; -include "bitify.circom"; -include "escalarmulany.circom"; -include "escalarmulfix.circom"; - -template EdDSAPoseidonVerifier() { - signal input enabled; - signal input Ax; - signal input Ay; - - signal input S; - signal input R8x; - signal input R8y; - - signal input M; - - var i; - -// Ensure S compConstant.in[i]; - } - compConstant.in[253] <== 0; - compConstant.out*enabled === 0; - -// Calculate the h = H(R,A, msg) - - component hash = Poseidon(5); - - hash.inputs[0] <== R8x; - hash.inputs[1] <== R8y; - hash.inputs[2] <== Ax; - hash.inputs[3] <== Ay; - hash.inputs[4] <== M; - - component h2bits = Num2Bits_strict(); - h2bits.in <== hash.out; - -// Calculate second part of the right side: right2 = h*8*A - - // Multiply by 8 by adding it 3 times. This also ensure that the result is in - // the subgroup. - component dbl1 = BabyDbl(); - dbl1.x <== Ax; - dbl1.y <== Ay; - component dbl2 = BabyDbl(); - dbl2.x <== dbl1.xout; - dbl2.y <== dbl1.yout; - component dbl3 = BabyDbl(); - dbl3.x <== dbl2.xout; - dbl3.y <== dbl2.yout; - - // We check that A is not zero. - component isZero = IsZero(); - isZero.in <== dbl3.x; - isZero.out*enabled === 0; - - component mulAny = EscalarMulAny(254); - for (i=0; i<254; i++) { - mulAny.e[i] <== h2bits.out[i]; - } - mulAny.p[0] <== dbl3.xout; - mulAny.p[1] <== dbl3.yout; - - -// Compute the right side: right = R8 + right2 - - component addRight = BabyAdd(); - addRight.x1 <== R8x; - addRight.y1 <== R8y; - addRight.x2 <== mulAny.out[0]; - addRight.y2 <== mulAny.out[1]; - -// Calculate left side of equation left = S*B8 - - var BASE8[2] = [ - 5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203 - ]; - component mulFix = EscalarMulFix(253, BASE8); - for (i=0; i<253; i++) { - mulFix.e[i] <== snum2bits.out[i]; - } - -// Do the comparation left == right if enabled; - - component eqCheckX = ForceEqualIfEnabled(); - eqCheckX.enabled <== enabled; - eqCheckX.in[0] <== mulFix.out[0]; - eqCheckX.in[1] <== addRight.xout; - - component eqCheckY = ForceEqualIfEnabled(); - eqCheckY.enabled <== enabled; - eqCheckY.in[0] <== mulFix.out[1]; - eqCheckY.in[1] <== addRight.yout; -} diff --git a/node_modules/circomlib/circuits/escalarmul.circom b/node_modules/circomlib/circuits/escalarmul.circom deleted file mode 100644 index 809d995..0000000 --- a/node_modules/circomlib/circuits/escalarmul.circom +++ /dev/null @@ -1,166 +0,0 @@ - /* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* - - ┏━━━━━━━━━━━┓ - ┃ ┃ - ┃ ┃ - (inx, iny) ══════════════════════════════════════════▶┃ EC Point ┃ - ┃ ╠═▶ (outx, outy) - ╔══▶┃ Adder ┃ - ║ ┃ ┃ - ║ ┃ ┃ - ║ ┃ ┃ - ┏━━━━━━━━━━━┓ ┏━━━━━━━━━━━━┓ ║ ┗━━━━━━━━━━━┛ - ┃ ┃ ┃ ┃ ║ - ┃ ┃ ┃ ┃ ║ - ┃ ╠═══(p0x,p0y)═══▶┃ ┃ ║ - ┃ ╠═══(p1x,p1y)═══▶┃ ┃ ║ - ┃ ╠═══(p2x,p2y)═══▶┃ ┃ ║ - ┃ ╠═══(p3x,p3y)═══▶┃ ┃ ║ - ┃ ╠═══(p4x,p4y)═══▶┃ ┃ ║ - ┃ ╠═══(p5x,p5y)═══▶┃ ┃ ║ - ┃ ╠═══(p6x,p6y)═══▶┃ ┃ ║ - ┃ Constant ╠═══(p7x,p7y)═══▶┃ ┃ ║ - ┃ Points ┃ ┃ Mux4 ╠══╝ - ┃ ╠═══(p8x,p8y)═══▶┃ ┃ - ┃ ╠═══(p9x,p9y)═══▶┃ ┃ - ┃ ╠══(p10x,p10y)══▶┃ ┃ - ┃ ╠══(p11x,p11y)══▶┃ ┃ - ┃ ╠══(p12x,p12y)══▶┃ ┃ - ┃ ╠══(p13x,p13y)══▶┃ ┃ - ┃ ╠══(p14x,p14y)══▶┃ ┃ - ┃ ╠══(p15x,p15y)══▶┃ ┃ - ┃ ┃ ┃ ┃ - ┃ ┃ ┃ ┃ - ┗━━━━━━━━━━━┛ ┗━━━━━━━━━━━━┛ - ▲ ▲ ▲ ▲ - │ │ │ │ - s0 ─────────────────────────────────┘ │ │ │ - s1 ────────────────────────────────────┘ │ │ - s2 ───────────────────────────────────────┘ │ - s3 ──────────────────────────────────────────┘ - - - */ -pragma circom 2.0.0; - -include "mux4.circom"; -include "escalarmulw4table.circom"; -include "babyjub.circom"; - -template EscalarMulWindow(base, k) { - - signal input in[2]; - signal input sel[4]; - signal output out[2]; - - var table[16][2]; - component mux; - component adder; - - var i; - - table = EscalarMulW4Table(base, k); - mux = MultiMux4(2); - adder = BabyAdd(); - - for (i=0; i<4; i++) { - sel[i] ==> mux.s[i]; - } - - for (i=0; i<16; i++) { - mux.c[0][i] <== table[i][0]; - mux.c[1][i] <== table[i][1]; - } - - in[0] ==> adder.x1; - in[1] ==> adder.y1; - - mux.out[0] ==> adder.x2; - mux.out[1] ==> adder.y2; - - adder.xout ==> out[0]; - adder.yout ==> out[1]; -} - -/* - - - ┏━━━━━━━━━┓ ┏━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ - inp ════▶┃Window(0)┃═════▶┃Window(1)┃════════ . . . . ═════════▶┃ Window(nBlocks-1) ┃═════▶ out - ┃ ┃ ┃ ┃ ┃ ┃ - ┗━━━━━━━━━┛ ┗━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━┛ - ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ - in[0]─────────┘ │ │ │ │ │ │ │ │ │ │ │ - in[1]───────────┘ │ │ │ │ │ │ │ │ │ │ - in[2]─────────────┘ │ │ │ │ │ │ │ 0 0 - in[3]───────────────┘ │ │ │ │ │ │ - in[4]──────────────────────────┘ │ │ │ │ │ - in[5]────────────────────────────┘ │ │ │ │ - in[6]──────────────────────────────┘ │ │ │ - in[7]────────────────────────────────┘ │ │ - . │ │ - . │ │ - in[n-2]─────────────────────────────────────────────────────────────────────┘ │ - in[n-1]───────────────────────────────────────────────────────────────────────┘ - - */ - -template EscalarMul(n, base) { - signal input in[n]; - signal input inp[2]; // Point input to be added - signal output out[2]; - - var nBlocks = ((n-1)>>2)+1; - var i; - var j; - - component windows[nBlocks]; - - // Construct the windows - for (i=0; i= n) { - windows[i].sel[j] <== 0; - } else { - windows[i].sel[j] <== in[i*4+j]; - } - } - } - - // Start with generator - windows[0].in[0] <== inp[0]; - windows[0].in[1] <== inp[1]; - - for(i=0; i windows[i+1].in[0]; - windows[i].out[1] ==> windows[i+1].in[1]; - } - - windows[nBlocks-1].out[0] ==> out[0]; - windows[nBlocks-1].out[1] ==> out[1]; -} diff --git a/node_modules/circomlib/circuits/escalarmulany.circom b/node_modules/circomlib/circuits/escalarmulany.circom deleted file mode 100644 index f07fe7d..0000000 --- a/node_modules/circomlib/circuits/escalarmulany.circom +++ /dev/null @@ -1,197 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "montgomery.circom"; -include "babyjub.circom"; -include "comparators.circom"; - -template Multiplexor2() { - signal input sel; - signal input in[2][2]; - signal output out[2]; - - out[0] <== (in[1][0] - in[0][0])*sel + in[0][0]; - out[1] <== (in[1][1] - in[0][1])*sel + in[0][1]; -} - -template BitElementMulAny() { - signal input sel; - signal input dblIn[2]; - signal input addIn[2]; - signal output dblOut[2]; - signal output addOut[2]; - - component doubler = MontgomeryDouble(); - component adder = MontgomeryAdd(); - component selector = Multiplexor2(); - - - sel ==> selector.sel; - - dblIn[0] ==> doubler.in[0]; - dblIn[1] ==> doubler.in[1]; - doubler.out[0] ==> adder.in1[0]; - doubler.out[1] ==> adder.in1[1]; - addIn[0] ==> adder.in2[0]; - addIn[1] ==> adder.in2[1]; - addIn[0] ==> selector.in[0][0]; - addIn[1] ==> selector.in[0][1]; - adder.out[0] ==> selector.in[1][0]; - adder.out[1] ==> selector.in[1][1]; - - doubler.out[0] ==> dblOut[0]; - doubler.out[1] ==> dblOut[1]; - selector.out[0] ==> addOut[0]; - selector.out[1] ==> addOut[1]; -} - -// p is montgomery point -// n must be <= 248 -// returns out in twisted edwards -// Double is in montgomery to be linked; - -template SegmentMulAny(n) { - signal input e[n]; - signal input p[2]; - signal output out[2]; - signal output dbl[2]; - - component bits[n-1]; - - component e2m = Edwards2Montgomery(); - - p[0] ==> e2m.in[0]; - p[1] ==> e2m.in[1]; - - var i; - - bits[0] = BitElementMulAny(); - e2m.out[0] ==> bits[0].dblIn[0]; - e2m.out[1] ==> bits[0].dblIn[1]; - e2m.out[0] ==> bits[0].addIn[0]; - e2m.out[1] ==> bits[0].addIn[1]; - e[1] ==> bits[0].sel; - - for (i=1; i bits[i].dblIn[0]; - bits[i-1].dblOut[1] ==> bits[i].dblIn[1]; - bits[i-1].addOut[0] ==> bits[i].addIn[0]; - bits[i-1].addOut[1] ==> bits[i].addIn[1]; - e[i+1] ==> bits[i].sel; - } - - bits[n-2].dblOut[0] ==> dbl[0]; - bits[n-2].dblOut[1] ==> dbl[1]; - - component m2e = Montgomery2Edwards(); - - bits[n-2].addOut[0] ==> m2e.in[0]; - bits[n-2].addOut[1] ==> m2e.in[1]; - - component eadder = BabyAdd(); - - m2e.out[0] ==> eadder.x1; - m2e.out[1] ==> eadder.y1; - -p[0] ==> eadder.x2; - p[1] ==> eadder.y2; - - component lastSel = Multiplexor2(); - - e[0] ==> lastSel.sel; - eadder.xout ==> lastSel.in[0][0]; - eadder.yout ==> lastSel.in[0][1]; - m2e.out[0] ==> lastSel.in[1][0]; - m2e.out[1] ==> lastSel.in[1][1]; - - lastSel.out[0] ==> out[0]; - lastSel.out[1] ==> out[1]; -} - -// This function assumes that p is in the subgroup and it is different to 0 - -template EscalarMulAny(n) { - signal input e[n]; // Input in binary format - signal input p[2]; // Point (Twisted format) - signal output out[2]; // Point (Twisted format) - - var nsegments = (n-1)\148 +1; - var nlastsegment = n - (nsegments-1)*148; - - component segments[nsegments]; - component doublers[nsegments-1]; - component m2e[nsegments-1]; - component adders[nsegments-1]; - component zeropoint = IsZero(); - zeropoint.in <== p[0]; - - var s; - var i; - var nseg; - - for (s=0; s segments[s].e[i]; - } - - if (s==0) { - // force G8 point if input point is zero - segments[s].p[0] <== p[0] + (5299619240641551281634865583518297030282874472190772894086521144482721001553 - p[0])*zeropoint.out; - segments[s].p[1] <== p[1] + (16950150798460657717958625567821834550301663161624707787222815936182638968203 - p[1])*zeropoint.out; - } else { - doublers[s-1] = MontgomeryDouble(); - m2e[s-1] = Montgomery2Edwards(); - adders[s-1] = BabyAdd(); - - segments[s-1].dbl[0] ==> doublers[s-1].in[0]; - segments[s-1].dbl[1] ==> doublers[s-1].in[1]; - - doublers[s-1].out[0] ==> m2e[s-1].in[0]; - doublers[s-1].out[1] ==> m2e[s-1].in[1]; - - m2e[s-1].out[0] ==> segments[s].p[0]; - m2e[s-1].out[1] ==> segments[s].p[1]; - - if (s==1) { - segments[s-1].out[0] ==> adders[s-1].x1; - segments[s-1].out[1] ==> adders[s-1].y1; - } else { - adders[s-2].xout ==> adders[s-1].x1; - adders[s-2].yout ==> adders[s-1].y1; - } - segments[s].out[0] ==> adders[s-1].x2; - segments[s].out[1] ==> adders[s-1].y2; - } - } - - if (nsegments == 1) { - segments[0].out[0]*(1-zeropoint.out) ==> out[0]; - segments[0].out[1]+(1-segments[0].out[1])*zeropoint.out ==> out[1]; - } else { - adders[nsegments-2].xout*(1-zeropoint.out) ==> out[0]; - adders[nsegments-2].yout+(1-adders[nsegments-2].yout)*zeropoint.out ==> out[1]; - } -} diff --git a/node_modules/circomlib/circuits/escalarmulfix.circom b/node_modules/circomlib/circuits/escalarmulfix.circom deleted file mode 100644 index 4669d36..0000000 --- a/node_modules/circomlib/circuits/escalarmulfix.circom +++ /dev/null @@ -1,299 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "mux3.circom"; -include "montgomery.circom"; -include "babyjub.circom"; - -/* - Window of 3 elements, it calculates - out = base + base*in[0] + 2*base*in[1] + 4*base*in[2] - out4 = 4*base - - The result should be compensated. - */ - -/* - - The scalar is s = a0 + a1*2^3 + a2*2^6 + ...... + a81*2^243 - First We calculate Q = B + 2^3*B + 2^6*B + ......... + 2^246*B - - Then we calculate S1 = 2*2^246*B + (1 + a0)*B + (2^3 + a1)*B + .....+ (2^243 + a81)*B - - And Finaly we compute the result: RES = SQ - Q - - As you can see the input of the adders cannot be equal nor zero, except for the last - substraction that it's done in montgomery. - - A good way to see it is that the accumulator input of the adder >= 2^247*B and the other input - is the output of the windows that it's going to be <= 2^246*B - */ -template WindowMulFix() { - signal input in[3]; - signal input base[2]; - signal output out[2]; - signal output out8[2]; // Returns 8*Base (To be linked) - - component mux = MultiMux3(2); - - mux.s[0] <== in[0]; - mux.s[1] <== in[1]; - mux.s[2] <== in[2]; - - component dbl2 = MontgomeryDouble(); - component adr3 = MontgomeryAdd(); - component adr4 = MontgomeryAdd(); - component adr5 = MontgomeryAdd(); - component adr6 = MontgomeryAdd(); - component adr7 = MontgomeryAdd(); - component adr8 = MontgomeryAdd(); - -// in[0] -> 1*BASE - - mux.c[0][0] <== base[0]; - mux.c[1][0] <== base[1]; - -// in[1] -> 2*BASE - dbl2.in[0] <== base[0]; - dbl2.in[1] <== base[1]; - mux.c[0][1] <== dbl2.out[0]; - mux.c[1][1] <== dbl2.out[1]; - -// in[2] -> 3*BASE - adr3.in1[0] <== base[0]; - adr3.in1[1] <== base[1]; - adr3.in2[0] <== dbl2.out[0]; - adr3.in2[1] <== dbl2.out[1]; - mux.c[0][2] <== adr3.out[0]; - mux.c[1][2] <== adr3.out[1]; - -// in[3] -> 4*BASE - adr4.in1[0] <== base[0]; - adr4.in1[1] <== base[1]; - adr4.in2[0] <== adr3.out[0]; - adr4.in2[1] <== adr3.out[1]; - mux.c[0][3] <== adr4.out[0]; - mux.c[1][3] <== adr4.out[1]; - -// in[4] -> 5*BASE - adr5.in1[0] <== base[0]; - adr5.in1[1] <== base[1]; - adr5.in2[0] <== adr4.out[0]; - adr5.in2[1] <== adr4.out[1]; - mux.c[0][4] <== adr5.out[0]; - mux.c[1][4] <== adr5.out[1]; - -// in[5] -> 6*BASE - adr6.in1[0] <== base[0]; - adr6.in1[1] <== base[1]; - adr6.in2[0] <== adr5.out[0]; - adr6.in2[1] <== adr5.out[1]; - mux.c[0][5] <== adr6.out[0]; - mux.c[1][5] <== adr6.out[1]; - -// in[6] -> 7*BASE - adr7.in1[0] <== base[0]; - adr7.in1[1] <== base[1]; - adr7.in2[0] <== adr6.out[0]; - adr7.in2[1] <== adr6.out[1]; - mux.c[0][6] <== adr7.out[0]; - mux.c[1][6] <== adr7.out[1]; - -// in[7] -> 8*BASE - adr8.in1[0] <== base[0]; - adr8.in1[1] <== base[1]; - adr8.in2[0] <== adr7.out[0]; - adr8.in2[1] <== adr7.out[1]; - mux.c[0][7] <== adr8.out[0]; - mux.c[1][7] <== adr8.out[1]; - - out8[0] <== adr8.out[0]; - out8[1] <== adr8.out[1]; - - out[0] <== mux.out[0]; - out[1] <== mux.out[1]; -} - - -/* - This component does a multiplication of a escalar times a fix base - Signals: - e: The scalar in bits - base: the base point in edwards format - out: The result - dbl: Point in Edwards to be linked to the next segment. - */ - -template SegmentMulFix(nWindows) { - signal input e[nWindows*3]; - signal input base[2]; - signal output out[2]; - signal output dbl[2]; - - var i; - var j; - - // Convert the base to montgomery - - component e2m = Edwards2Montgomery(); - e2m.in[0] <== base[0]; - e2m.in[1] <== base[1]; - - component windows[nWindows]; - component adders[nWindows]; - component cadders[nWindows]; - - // In the last step we add an extra doubler so that numbers do not match. - component dblLast = MontgomeryDouble(); - - for (i=0; i out[0]; - cAdd.yout ==> out[1]; - - windows[nWindows-1].out8[0] ==> dbl[0]; - windows[nWindows-1].out8[1] ==> dbl[1]; -} - - -/* -This component multiplies a escalar times a fixed point BASE (twisted edwards format) - Signals - e: The escalar in binary format - out: The output point in twisted edwards - */ -template EscalarMulFix(n, BASE) { - signal input e[n]; // Input in binary format - signal output out[2]; // Point (Twisted format) - - var nsegments = (n-1)\246 +1; // 249 probably would work. But I'm not sure and for security I keep 246 - var nlastsegment = n - (nsegments-1)*249; - - component segments[nsegments]; - - component m2e[nsegments-1]; - component adders[nsegments-1]; - - var s; - var i; - var nseg; - var nWindows; - - for (s=0; s m2e[s-1].in[0]; - segments[s-1].dbl[1] ==> m2e[s-1].in[1]; - - m2e[s-1].out[0] ==> segments[s].base[0]; - m2e[s-1].out[1] ==> segments[s].base[1]; - - if (s==1) { - segments[s-1].out[0] ==> adders[s-1].x1; - segments[s-1].out[1] ==> adders[s-1].y1; - } else { - adders[s-2].xout ==> adders[s-1].x1; - adders[s-2].yout ==> adders[s-1].y1; - } - segments[s].out[0] ==> adders[s-1].x2; - segments[s].out[1] ==> adders[s-1].y2; - } - } - - if (nsegments == 1) { - segments[0].out[0] ==> out[0]; - segments[0].out[1] ==> out[1]; - } else { - adders[nsegments-2].xout ==> out[0]; - adders[nsegments-2].yout ==> out[1]; - } -} diff --git a/node_modules/circomlib/circuits/escalarmulw4table.circom b/node_modules/circomlib/circuits/escalarmulw4table.circom deleted file mode 100644 index 25c095a..0000000 --- a/node_modules/circomlib/circuits/escalarmulw4table.circom +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -function pointAdd(x1,y1,x2,y2) { - var a = 168700; - var d = 168696; - - var res[2]; - res[0] = (x1*y2 + y1*x2) / (1 + d*x1*x2*y1*y2); - res[1] = (y1*y2 - a*x1*x2) / (1 - d*x1*x2*y1*y2); - return res; -} - -function EscalarMulW4Table(base, k) { - var out[16][2]; - - var i; - var p[2]; - - var dbl[2] = base; - - for (i=0; i. -*/ -pragma circom 2.0.0; - -template XOR() { - signal input a; - signal input b; - signal output out; - - out <== a + b - 2*a*b; -} - -template AND() { - signal input a; - signal input b; - signal output out; - - out <== a*b; -} - -template OR() { - signal input a; - signal input b; - signal output out; - - out <== a + b - a*b; -} - -template NOT() { - signal input in; - signal output out; - - out <== 1 + in - 2*in; -} - -template NAND() { - signal input a; - signal input b; - signal output out; - - out <== 1 - a*b; -} - -template NOR() { - signal input a; - signal input b; - signal output out; - - out <== a*b + 1 - a - b; -} - -template MultiAND(n) { - signal input in[n]; - signal output out; - component and1; - component and2; - component ands[2]; - if (n==1) { - out <== in[0]; - } else if (n==2) { - and1 = AND(); - and1.a <== in[0]; - and1.b <== in[1]; - out <== and1.out; - } else { - and2 = AND(); - var n1 = n\2; - var n2 = n-n\2; - ands[0] = MultiAND(n1); - ands[1] = MultiAND(n2); - var i; - for (i=0; i. -*/ -pragma circom 2.0.0; - -template MiMC7(nrounds) { - signal input x_in; - signal input k; - signal output out; - - var c[91] = [ - 0, - 20888961410941983456478427210666206549300505294776164667214940546594746570981, - 15265126113435022738560151911929040668591755459209400716467504685752745317193, - 8334177627492981984476504167502758309043212251641796197711684499645635709656, - 1374324219480165500871639364801692115397519265181803854177629327624133579404, - 11442588683664344394633565859260176446561886575962616332903193988751292992472, - 2558901189096558760448896669327086721003508630712968559048179091037845349145, - 11189978595292752354820141775598510151189959177917284797737745690127318076389, - 3262966573163560839685415914157855077211340576201936620532175028036746741754, - 17029914891543225301403832095880481731551830725367286980611178737703889171730, - 4614037031668406927330683909387957156531244689520944789503628527855167665518, - 19647356996769918391113967168615123299113119185942498194367262335168397100658, - 5040699236106090655289931820723926657076483236860546282406111821875672148900, - 2632385916954580941368956176626336146806721642583847728103570779270161510514, - 17691411851977575435597871505860208507285462834710151833948561098560743654671, - 11482807709115676646560379017491661435505951727793345550942389701970904563183, - 8360838254132998143349158726141014535383109403565779450210746881879715734773, - 12663821244032248511491386323242575231591777785787269938928497649288048289525, - 3067001377342968891237590775929219083706800062321980129409398033259904188058, - 8536471869378957766675292398190944925664113548202769136103887479787957959589, - 19825444354178182240559170937204690272111734703605805530888940813160705385792, - 16703465144013840124940690347975638755097486902749048533167980887413919317592, - 13061236261277650370863439564453267964462486225679643020432589226741411380501, - 10864774797625152707517901967943775867717907803542223029967000416969007792571, - 10035653564014594269791753415727486340557376923045841607746250017541686319774, - 3446968588058668564420958894889124905706353937375068998436129414772610003289, - 4653317306466493184743870159523234588955994456998076243468148492375236846006, - 8486711143589723036499933521576871883500223198263343024003617825616410932026, - 250710584458582618659378487568129931785810765264752039738223488321597070280, - 2104159799604932521291371026105311735948154964200596636974609406977292675173, - 16313562605837709339799839901240652934758303521543693857533755376563489378839, - 6032365105133504724925793806318578936233045029919447519826248813478479197288, - 14025118133847866722315446277964222215118620050302054655768867040006542798474, - 7400123822125662712777833064081316757896757785777291653271747396958201309118, - 1744432620323851751204287974553233986555641872755053103823939564833813704825, - 8316378125659383262515151597439205374263247719876250938893842106722210729522, - 6739722627047123650704294650168547689199576889424317598327664349670094847386, - 21211457866117465531949733809706514799713333930924902519246949506964470524162, - 13718112532745211817410303291774369209520657938741992779396229864894885156527, - 5264534817993325015357427094323255342713527811596856940387954546330728068658, - 18884137497114307927425084003812022333609937761793387700010402412840002189451, - 5148596049900083984813839872929010525572543381981952060869301611018636120248, - 19799686398774806587970184652860783461860993790013219899147141137827718662674, - 19240878651604412704364448729659032944342952609050243268894572835672205984837, - 10546185249390392695582524554167530669949955276893453512788278945742408153192, - 5507959600969845538113649209272736011390582494851145043668969080335346810411, - 18177751737739153338153217698774510185696788019377850245260475034576050820091, - 19603444733183990109492724100282114612026332366576932662794133334264283907557, - 10548274686824425401349248282213580046351514091431715597441736281987273193140, - 1823201861560942974198127384034483127920205835821334101215923769688644479957, - 11867589662193422187545516240823411225342068709600734253659804646934346124945, - 18718569356736340558616379408444812528964066420519677106145092918482774343613, - 10530777752259630125564678480897857853807637120039176813174150229243735996839, - 20486583726592018813337145844457018474256372770211860618687961310422228379031, - 12690713110714036569415168795200156516217175005650145422920562694422306200486, - 17386427286863519095301372413760745749282643730629659997153085139065756667205, - 2216432659854733047132347621569505613620980842043977268828076165669557467682, - 6309765381643925252238633914530877025934201680691496500372265330505506717193, - 20806323192073945401862788605803131761175139076694468214027227878952047793390, - 4037040458505567977365391535756875199663510397600316887746139396052445718861, - 19948974083684238245321361840704327952464170097132407924861169241740046562673, - 845322671528508199439318170916419179535949348988022948153107378280175750024, - 16222384601744433420585982239113457177459602187868460608565289920306145389382, - 10232118865851112229330353999139005145127746617219324244541194256766741433339, - 6699067738555349409504843460654299019000594109597429103342076743347235369120, - 6220784880752427143725783746407285094967584864656399181815603544365010379208, - 6129250029437675212264306655559561251995722990149771051304736001195288083309, - 10773245783118750721454994239248013870822765715268323522295722350908043393604, - 4490242021765793917495398271905043433053432245571325177153467194570741607167, - 19596995117319480189066041930051006586888908165330319666010398892494684778526, - 837850695495734270707668553360118467905109360511302468085569220634750561083, - 11803922811376367215191737026157445294481406304781326649717082177394185903907, - 10201298324909697255105265958780781450978049256931478989759448189112393506592, - 13564695482314888817576351063608519127702411536552857463682060761575100923924, - 9262808208636973454201420823766139682381973240743541030659775288508921362724, - 173271062536305557219323722062711383294158572562695717740068656098441040230, - 18120430890549410286417591505529104700901943324772175772035648111937818237369, - 20484495168135072493552514219686101965206843697794133766912991150184337935627, - 19155651295705203459475805213866664350848604323501251939850063308319753686505, - 11971299749478202793661982361798418342615500543489781306376058267926437157297, - 18285310723116790056148596536349375622245669010373674803854111592441823052978, - 7069216248902547653615508023941692395371990416048967468982099270925308100727, - 6465151453746412132599596984628739550147379072443683076388208843341824127379, - 16143532858389170960690347742477978826830511669766530042104134302796355145785, - 19362583304414853660976404410208489566967618125972377176980367224623492419647, - 1702213613534733786921602839210290505213503664731919006932367875629005980493, - 10781825404476535814285389902565833897646945212027592373510689209734812292327, - 4212716923652881254737947578600828255798948993302968210248673545442808456151, - 7594017890037021425366623750593200398174488805473151513558919864633711506220, - 18979889247746272055963929241596362599320706910852082477600815822482192194401, - 13602139229813231349386885113156901793661719180900395818909719758150455500533 - ]; - - var t; - signal t2[nrounds]; - signal t4[nrounds]; - signal t6[nrounds]; - signal t7[nrounds-1]; - - for (var i=0; i nRounds should be 220 -template MiMCSponge(nInputs, nRounds, nOutputs) { - signal input ins[nInputs]; - signal input k; - signal output outs[nOutputs]; - - var i; - - // S = R||C - component S[nInputs + nOutputs - 1]; - - for (i = 0; i < nInputs; i++) { - S[i] = MiMCFeistel(nRounds); - S[i].k <== k; - if (i == 0) { - S[i].xL_in <== ins[0]; - S[i].xR_in <== 0; - } else { - S[i].xL_in <== S[i-1].xL_out + ins[i]; - S[i].xR_in <== S[i-1].xR_out; - } - } - - outs[0] <== S[nInputs - 1].xL_out; - - for (i = 0; i < nOutputs - 1; i++) { - S[nInputs + i] = MiMCFeistel(nRounds); - S[nInputs + i].k <== k; - S[nInputs + i].xL_in <== S[nInputs + i - 1].xL_out; - S[nInputs + i].xR_in <== S[nInputs + i - 1].xR_out; - outs[i + 1] <== S[nInputs + i].xL_out; - } -} - -template MiMCFeistel(nrounds) { - signal input xL_in; - signal input xR_in; - signal input k; - signal output xL_out; - signal output xR_out; - - // doesn't contain the first and last round constants, which are always zero - var c_partial[218] = [ - 7120861356467848435263064379192047478074060781135320967663101236819528304084, - 5024705281721889198577876690145313457398658950011302225525409148828000436681, - 17980351014018068290387269214713820287804403312720763401943303895585469787384, - 19886576439381707240399940949310933992335779767309383709787331470398675714258, - 1213715278223786725806155661738676903520350859678319590331207960381534602599, - 18162138253399958831050545255414688239130588254891200470934232514682584734511, - 7667462281466170157858259197976388676420847047604921256361474169980037581876, - 7207551498477838452286210989212982851118089401128156132319807392460388436957, - 9864183311657946807255900203841777810810224615118629957816193727554621093838, - 4798196928559910300796064665904583125427459076060519468052008159779219347957, - 17387238494588145257484818061490088963673275521250153686214197573695921400950, - 10005334761930299057035055370088813230849810566234116771751925093634136574742, - 11897542014760736209670863723231849628230383119798486487899539017466261308762, - 16771780563523793011283273687253985566177232886900511371656074413362142152543, - 749264854018824809464168489785113337925400687349357088413132714480582918506, - 3683645737503705042628598550438395339383572464204988015434959428676652575331, - 7556750851783822914673316211129907782679509728346361368978891584375551186255, - 20391289379084797414557439284689954098721219201171527383291525676334308303023, - 18146517657445423462330854383025300323335289319277199154920964274562014376193, - 8080173465267536232534446836148661251987053305394647905212781979099916615292, - 10796443006899450245502071131975731672911747129805343722228413358507805531141, - 5404287610364961067658660283245291234008692303120470305032076412056764726509, - 4623894483395123520243967718315330178025957095502546813929290333264120223168, - 16845753148201777192406958674202574751725237939980634861948953189320362207797, - 4622170486584704769521001011395820886029808520586507873417553166762370293671, - 16688277490485052681847773549197928630624828392248424077804829676011512392564, - 11878652861183667748838188993669912629573713271883125458838494308957689090959, - 2436445725746972287496138382764643208791713986676129260589667864467010129482, - 1888098689545151571063267806606510032698677328923740058080630641742325067877, - 148924106504065664829055598316821983869409581623245780505601526786791681102, - 18875020877782404439294079398043479420415331640996249745272087358069018086569, - 15189693413320228845990326214136820307649565437237093707846682797649429515840, - 19669450123472657781282985229369348220906547335081730205028099210442632534079, - 5521922218264623411380547905210139511350706092570900075727555783240701821773, - 4144769320246558352780591737261172907511489963810975650573703217887429086546, - 10097732913112662248360143041019433907849917041759137293018029019134392559350, - 1720059427972723034107765345743336447947522473310069975142483982753181038321, - 6302388219880227251325608388535181451187131054211388356563634768253301290116, - 6745410632962119604799318394592010194450845483518862700079921360015766217097, - 10858157235265583624235850660462324469799552996870780238992046963007491306222, - 20241898894740093733047052816576694435372877719072347814065227797906130857593, - 10165780782761211520836029617746977303303335603838343292431760011576528327409, - 2832093654883670345969792724123161241696170611611744759675180839473215203706, - 153011722355526826233082383360057587249818749719433916258246100068258954737, - 20196970640587451358539129330170636295243141659030208529338914906436009086943, - 3180973917010545328313139835982464870638521890385603025657430208141494469656, - 17198004293191777441573635123110935015228014028618868252989374962722329283022, - 7642160509228669138628515458941659189680509753651629476399516332224325757132, - 19346204940546791021518535594447257347218878114049998691060016493806845179755, - 11501810868606870391127866188394535330696206817602260610801897042898616817272, - 3113973447392053821824427670386252797811804954746053461397972968381571297505, - 6545064306297957002139416752334741502722251869537551068239642131448768236585, - 5203908808704813498389265425172875593837960384349653691918590736979872578408, - 2246692432011290582160062129070762007374502637007107318105405626910313810224, - 11760570435432189127645691249600821064883781677693087773459065574359292849137, - 5543749482491340532547407723464609328207990784853381797689466144924198391839, - 8837549193990558762776520822018694066937602576881497343584903902880277769302, - 12855514863299373699594410385788943772765811961581749194183533625311486462501, - 5363660674689121676875069134269386492382220935599781121306637800261912519729, - 13162342403579303950549728848130828093497701266240457479693991108217307949435, - 916941639326869583414469202910306428966657806899788970948781207501251816730, - 15618589556584434434009868216186115416835494805174158488636000580759692174228, - 8959562060028569701043973060670353733575345393653685776974948916988033453971, - 16390754464333401712265575949874369157699293840516802426621216808905079127650, - 168282396747788514908709091757591226095443902501365500003618183905496160435, - 8327443473179334761744301768309008451162322941906921742120510244986704677004, - 17213012626801210615058753489149961717422101711567228037597150941152495100640, - 10394369641533736715250242399198097296122982486516256408681925424076248952280, - 17784386835392322654196171115293700800825771210400152504776806618892170162248, - 16533189939837087893364000390641148516479148564190420358849587959161226782982, - 18725396114211370207078434315900726338547621160475533496863298091023511945076, - 7132325028834551397904855671244375895110341505383911719294705267624034122405, - 148317947440800089795933930720822493695520852448386394775371401743494965187, - 19001050671757720352890779127693793630251266879994702723636759889378387053056, - 18824274411769830274877839365728651108434404855803844568234862945613766611460, - 12771414330193951156383998390424063470766226667986423961689712557338777174205, - 11332046574800279729678603488745295198038913503395629790213378101166488244657, - 9607550223176946388146938069307456967842408600269548190739947540821716354749, - 8756385288462344550200229174435953103162307705310807828651304665320046782583, - 176061952957067086877570020242717222844908281373122372938833890096257042779, - 12200212977482648306758992405065921724409841940671166017620928947866825250857, - 10868453624107875516866146499877130701929063632959660262366632833504750028858, - 2016095394399807253596787752134573207202567875457560571095586743878953450738, - 21815578223768330433802113452339488275704145896544481092014911825656390567514, - 4923772847693564777744725640710197015181591950368494148029046443433103381621, - 1813584943682214789802230765734821149202472893379265320098816901270224589984, - 10810123816265612772922113403831964815724109728287572256602010709288980656498, - 1153669123397255702524721206511185557982017410156956216465120456256288427021, - 5007518659266430200134478928344522649876467369278722765097865662497773767152, - 2511432546938591792036639990606464315121646668029252285288323664350666551637, - 32883284540320451295484135704808083452381176816565850047310272290579727564, - 10484856914279112612610993418405543310546746652738541161791501150994088679557, - 2026733759645519472558796412979210009170379159866522399881566309631434814953, - 14731806221235869882801331463708736361296174006732553130708107037190460654379, - 14740327483193277147065845135561988641238516852487657117813536909482068950652, - 18787428285295558781869865751953016580493190547148386433580291216673009884554, - 3804047064713122820157099453648459188816376755739202017447862327783289895072, - 16709604795697901641948603019242067672006293290826991671766611326262532802914, - 11061717085931490100602849654034280576915102867237101935487893025907907250695, - 2821730726367472966906149684046356272806484545281639696873240305052362149654, - 17467794879902895769410571945152708684493991588672014763135370927880883292655, - 1571520786233540988201616650622796363168031165456869481368085474420849243232, - 10041051776251223165849354194892664881051125330236567356945669006147134614302, - 3981753758468103976812813304477670033098707002886030847251581853700311567551, - 4365864398105436789177703571412645548020537580493599380018290523813331678900, - 2391801327305361293476178683853802679507598622000359948432171562543560193350, - 214219368547551689972421167733597094823289857206402800635962137077096090722, - 18192064100315141084242006659317257023098826945893371479835220462302399655674, - 15487549757142039139328911515400805508248576685795694919457041092150651939253, - 10142447197759703415402259672441315777933858467700579946665223821199077641122, - 11246573086260753259993971254725613211193686683988426513880826148090811891866, - 6574066859860991369704567902211886840188702386542112593710271426704432301235, - 11311085442652291634822798307831431035776248927202286895207125867542470350078, - 20977948360215259915441258687649465618185769343138135384346964466965010873779, - 792781492853909872425531014397300057232399608769451037135936617996830018501, - 5027602491523497423798779154966735896562099398367163998686335127580757861872, - 14595204575654316237672764823862241845410365278802914304953002937313300553572, - 13973538843621261113924259058427434053808430378163734641175100160836376897004, - 16395063164993626722686882727042150241125309409717445381854913964674649318585, - 8465768840047024550750516678171433288207841931251654898809033371655109266663, - 21345603324471810861925019445720576814602636473739003852898308205213912255830, - 21171984405852590343970239018692870799717057961108910523876770029017785940991, - 10761027113757988230637066281488532903174559953630210849190212601991063767647, - 6678298831065390834922566306988418588227382406175769592902974103663687992230, - 4993662582188632374202316265508850988596880036291765531885657575099537176757, - 18364168158495573675698600238443218434246806358811328083953887470513967121206, - 3506345610354615013737144848471391553141006285964325596214723571988011984829, - 248732676202643792226973868626360612151424823368345645514532870586234380100, - 10090204501612803176317709245679152331057882187411777688746797044706063410969, - 21297149835078365363970699581821844234354988617890041296044775371855432973500, - 16729368143229828574342820060716366330476985824952922184463387490091156065099, - 4467191506765339364971058668792642195242197133011672559453028147641428433293, - 8677548159358013363291014307402600830078662555833653517843708051504582990832, - 1022951765127126818581466247360193856197472064872288389992480993218645055345, - 1888195070251580606973417065636430294417895423429240431595054184472931224452, - 4221265384902749246920810956363310125115516771964522748896154428740238579824, - 2825393571154632139467378429077438870179957021959813965940638905853993971879, - 19171031072692942278056619599721228021635671304612437350119663236604712493093, - 10780807212297131186617505517708903709488273075252405602261683478333331220733, - 18230936781133176044598070768084230333433368654744509969087239465125979720995, - 16901065971871379877929280081392692752968612240624985552337779093292740763381, - 146494141603558321291767829522948454429758543710648402457451799015963102253, - 2492729278659146790410698334997955258248120870028541691998279257260289595548, - 2204224910006646535594933495262085193210692406133533679934843341237521233504, - 16062117410185840274616925297332331018523844434907012275592638570193234893570, - 5894928453677122829055071981254202951712129328678534592916926069506935491729, - 4947482739415078212217504789923078546034438919537985740403824517728200332286, - 16143265650645676880461646123844627780378251900510645261875867423498913438066, - 397690828254561723549349897112473766901585444153303054845160673059519614409, - 11272653598912269895509621181205395118899451234151664604248382803490621227687, - 15566927854306879444693061574322104423426072650522411176731130806720753591030, - 14222898219492484180162096141564251903058269177856173968147960855133048449557, - 16690275395485630428127725067513114066329712673106153451801968992299636791385, - 3667030990325966886479548860429670833692690972701471494757671819017808678584, - 21280039024501430842616328642522421302481259067470872421086939673482530783142, - 15895485136902450169492923978042129726601461603404514670348703312850236146328, - 7733050956302327984762132317027414325566202380840692458138724610131603812560, - 438123800976401478772659663183448617575635636575786782566035096946820525816, - 814913922521637742587885320797606426167962526342166512693085292151314976633, - 12368712287081330853637674140264759478736012797026621876924395982504369598764, - 2494806857395134874309386694756263421445039103814920780777601708371037591569, - 16101132301514338989512946061786320637179843435886825102406248183507106312877, - 6252650284989960032925831409804233477770646333900692286731621844532438095656, - 9277135875276787021836189566799935097400042171346561246305113339462708861695, - 10493603554686607050979497281838644324893776154179810893893660722522945589063, - 8673089750662709235894359384294076697329948991010184356091130382437645649279, - 9558393272910366944245875920138649617479779893610128634419086981339060613250, - 19012287860122586147374214541764572282814469237161122489573881644994964647218, - 9783723818270121678386992630754842961728702994964214799008457449989291229500, - 15550788416669474113213749561488122552422887538676036667630838378023479382689, - 15016165746156232864069722572047169071786333815661109750860165034341572904221, - 6506225705710197163670556961299945987488979904603689017479840649664564978574, - 10796631184889302076168355684722130903785890709107732067446714470783437829037, - 19871836214837460419845806980869387567383718044439891735114283113359312279540, - 20871081766843466343749609089986071784031203517506781251203251608363835140622, - 5100105771517691442278432864090229416166996183792075307747582375962855820797, - 8777887112076272395250620301071581171386440850451972412060638225741125310886, - 5300440870136391278944213332144327695659161151625757537632832724102670898756, - 1205448543652932944633962232545707633928124666868453915721030884663332604536, - 5542499997310181530432302492142574333860449305424174466698068685590909336771, - 11028094245762332275225364962905938096659249161369092798505554939952525894293, - 19187314764836593118404597958543112407224947638377479622725713735224279297009, - 17047263688548829001253658727764731047114098556534482052135734487985276987385, - 19914849528178967155534624144358541535306360577227460456855821557421213606310, - 2929658084700714257515872921366736697080475676508114973627124569375444665664, - 15092262360719700162343163278648422751610766427236295023221516498310468956361, - 21578580340755653236050830649990190843552802306886938815497471545814130084980, - 1258781501221760320019859066036073675029057285507345332959539295621677296991, - 3819598418157732134449049289585680301176983019643974929528867686268702720163, - 8653175945487997845203439345797943132543211416447757110963967501177317426221, - 6614652990340435611114076169697104582524566019034036680161902142028967568142, - 19212515502973904821995111796203064175854996071497099383090983975618035391558, - 18664315914479294273286016871365663486061896605232511201418576829062292269769, - 11498264615058604317482574216318586415670903094838791165247179252175768794889, - 10814026414212439999107945133852431304483604215416531759535467355316227331774, - 17566185590731088197064706533119299946752127014428399631467913813769853431107, - 14016139747289624978792446847000951708158212463304817001882956166752906714332, - 8242601581342441750402731523736202888792436665415852106196418942315563860366, - 9244680976345080074252591214216060854998619670381671198295645618515047080988, - 12216779172735125538689875667307129262237123728082657485828359100719208190116, - 10702811721859145441471328511968332847175733707711670171718794132331147396634, - 6479667912792222539919362076122453947926362746906450079329453150607427372979, - 15117544653571553820496948522381772148324367479772362833334593000535648316185, - 6842203153996907264167856337497139692895299874139131328642472698663046726780, - 12732823292801537626009139514048596316076834307941224506504666470961250728055, - 6936272626871035740815028148058841877090860312517423346335878088297448888663, - 17297554111853491139852678417579991271009602631577069694853813331124433680030, - 16641596134749940573104316021365063031319260205559553673368334842484345864859, - 7400481189785154329569470986896455371037813715804007747228648863919991399081, - 2273205422216987330510475127669563545720586464429614439716564154166712854048, - 15162538063742142685306302282127534305212832649282186184583465569986719234456, - 5628039096440332922248578319648483863204530861778160259559031331287721255522, - 16085392195894691829567913404182676871326863890140775376809129785155092531260, - 14227467863135365427954093998621993651369686288941275436795622973781503444257, - 18224457394066545825553407391290108485121649197258948320896164404518684305122, - 274945154732293792784580363548970818611304339008964723447672490026510689427, - 11050822248291117548220126630860474473945266276626263036056336623671308219529, - 2119542016932434047340813757208803962484943912710204325088879681995922344971 - ]; - - var t; - signal t2[nrounds]; - signal t4[nrounds]; - signal xL[nrounds-1]; - signal xR[nrounds-1]; - - var c; - for (var i=0; i. -*/ - -/* - Source: https://en.wikipedia.org/wiki/Montgomery_curve - - 1 + y 1 + y - [u, v] = [ ------- , ---------- ] - 1 - y (1 - y)x - - */ - pragma circom 2.0.0; - -template Edwards2Montgomery() { - signal input in[2]; - signal output out[2]; - - out[0] <-- (1 + in[1]) / (1 - in[1]); - out[1] <-- out[0] / in[0]; - - - out[0] * (1-in[1]) === (1 + in[1]); - out[1] * in[0] === out[0]; -} - -/* - - u u - 1 - [x, y] = [ ---, ------- ] - v u + 1 - - */ -template Montgomery2Edwards() { - signal input in[2]; - signal output out[2]; - - out[0] <-- in[0] / in[1]; - out[1] <-- (in[0] - 1) / (in[0] + 1); - - out[0] * in[1] === in[0]; - out[1] * (in[0] + 1) === in[0] - 1; -} - - -/* - x2 - x1 - lamda = --------- - y2 - y1 - - x3 + A + x1 + x2 - x3 = B * lamda^2 - A - x1 -x2 => lamda^2 = ------------------ - B - - y3 = (2*x1 + x2 + A)*lamda - B*lamda^3 - y1 => - - - => y3 = lamda * ( 2*x1 + x2 + A - x3 - A - x1 - x2) - y1 => - - => y3 = lamda * ( x1 - x3 ) - y1 - ----------- - - y2 - y1 - lamda = --------- - x2 - x1 - - x3 = B * lamda^2 - A - x1 -x2 - - y3 = lamda * ( x1 - x3 ) - y1 - - */ - -template MontgomeryAdd() { - signal input in1[2]; - signal input in2[2]; - signal output out[2]; - - var a = 168700; - var d = 168696; - - var A = (2 * (a + d)) / (a - d); - var B = 4 / (a - d); - - signal lamda; - - lamda <-- (in2[1] - in1[1]) / (in2[0] - in1[0]); - lamda * (in2[0] - in1[0]) === (in2[1] - in1[1]); - - out[0] <== B*lamda*lamda - A - in1[0] -in2[0]; - out[1] <== lamda * (in1[0] - out[0]) - in1[1]; -} - -/* - - x1_2 = x1*x1 - - 3*x1_2 + 2*A*x1 + 1 - lamda = --------------------- - 2*B*y1 - - x3 = B * lamda^2 - A - x1 -x1 - - y3 = lamda * ( x1 - x3 ) - y1 - - */ -template MontgomeryDouble() { - signal input in[2]; - signal output out[2]; - - var a = 168700; - var d = 168696; - - var A = (2 * (a + d)) / (a - d); - var B = 4 / (a - d); - - signal lamda; - signal x1_2; - - x1_2 <== in[0] * in[0]; - - lamda <-- (3*x1_2 + 2*A*in[0] + 1 ) / (2*B*in[1]); - lamda * (2*B*in[1]) === (3*x1_2 + 2*A*in[0] + 1 ); - - out[0] <== B*lamda*lamda - A - 2*in[0]; - out[1] <== lamda * (in[0] - out[0]) - in[1]; -} diff --git a/node_modules/circomlib/circuits/multiplexer.circom b/node_modules/circomlib/circuits/multiplexer.circom deleted file mode 100644 index 848e31e..0000000 --- a/node_modules/circomlib/circuits/multiplexer.circom +++ /dev/null @@ -1,115 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -// --> Assignation without constraint -// <-- Assignation without constraint -// === Constraint -// <== Assignation with constraint -// ==> Assignation with constraint -// All variables are members of the field F[p] -// https://github.com/zcash-hackworks/sapling-crypto -// https://github.com/ebfull/bellman - -/* -function log2(a) { - if (a==0) { - return 0; - } - let n = 1; - let r = 1; - while (n success; - success * (success -1) === 0; -} - - -template Multiplexer(wIn, nIn) { - signal input inp[nIn][wIn]; - signal input sel; - signal output out[wIn]; - component dec = Decoder(nIn); - component ep[wIn]; - - for (var k=0; k dec.inp; - for (var j=0; j ep[j].in1[k]; - dec.out[k] ==> ep[j].in2[k]; - } - ep[j].out ==> out[j]; - } - dec.success === 1; -} diff --git a/node_modules/circomlib/circuits/mux1.circom b/node_modules/circomlib/circuits/mux1.circom deleted file mode 100644 index 444cb84..0000000 --- a/node_modules/circomlib/circuits/mux1.circom +++ /dev/null @@ -1,48 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -template MultiMux1(n) { - signal input c[n][2]; // Constants - signal input s; // Selector - signal output out[n]; - - for (var i=0; i mux.s; - - mux.out[0] ==> out; -} diff --git a/node_modules/circomlib/circuits/mux2.circom b/node_modules/circomlib/circuits/mux2.circom deleted file mode 100644 index 557539b..0000000 --- a/node_modules/circomlib/circuits/mux2.circom +++ /dev/null @@ -1,63 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -template MultiMux2(n) { - signal input c[n][4]; // Constants - signal input s[2]; // Selector - signal output out[n]; - - signal a10[n]; - signal a1[n]; - signal a0[n]; - signal a[n]; - - signal s10; - s10 <== s[1] * s[0]; - - for (var i=0; i mux.s[i]; - } - - mux.out[0] ==> out; -} diff --git a/node_modules/circomlib/circuits/mux3.circom b/node_modules/circomlib/circuits/mux3.circom deleted file mode 100644 index 4be5f7c..0000000 --- a/node_modules/circomlib/circuits/mux3.circom +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -template MultiMux3(n) { - signal input c[n][8]; // Constants - signal input s[3]; // Selector - signal output out[n]; - - signal a210[n]; - signal a21[n]; - signal a20[n]; - signal a2[n]; - - signal a10[n]; - signal a1[n]; - signal a0[n]; - signal a[n]; - - // 4 constrains for the intermediary variables - signal s10; - s10 <== s[1] * s[0]; - - for (var i=0; i mux.s[i]; - } - - mux.out[0] ==> out; -} diff --git a/node_modules/circomlib/circuits/mux4.circom b/node_modules/circomlib/circuits/mux4.circom deleted file mode 100644 index 01e98bc..0000000 --- a/node_modules/circomlib/circuits/mux4.circom +++ /dev/null @@ -1,119 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -template MultiMux4(n) { - signal input c[n][16]; // Constants - signal input s[4]; // Selector - signal output out[n]; - - signal a3210[n]; - signal a321[n]; - signal a320[n]; - signal a310[n]; - signal a32[n]; - signal a31[n]; - signal a30[n]; - signal a3[n]; - - signal a210[n]; - signal a21[n]; - signal a20[n]; - signal a10[n]; - signal a2[n]; - signal a1[n]; - signal a0[n]; - signal a[n]; - - // 4 constrains for the intermediary variables - signal s10; - s10 <== s[1] * s[0]; - signal s20; - s20 <== s[2] * s[0]; - signal s21; - s21 <== s[2] * s[1]; - signal s210; - s210 <== s21 * s[0]; - - - for (var i=0; i mux.s[i]; - } - - mux.out[0] ==> out; -} diff --git a/node_modules/circomlib/circuits/pedersen.circom b/node_modules/circomlib/circuits/pedersen.circom deleted file mode 100644 index a29f486..0000000 --- a/node_modules/circomlib/circuits/pedersen.circom +++ /dev/null @@ -1,257 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "montgomery.circom"; -include "mux3.circom"; -include "babyjub.circom"; - -template Window4() { - signal input in[4]; - signal input base[2]; - signal output out[2]; - signal output out8[2]; // Returns 8*Base (To be linked) - - component mux = MultiMux3(2); - - mux.s[0] <== in[0]; - mux.s[1] <== in[1]; - mux.s[2] <== in[2]; - - component dbl2 = MontgomeryDouble(); - component adr3 = MontgomeryAdd(); - component adr4 = MontgomeryAdd(); - component adr5 = MontgomeryAdd(); - component adr6 = MontgomeryAdd(); - component adr7 = MontgomeryAdd(); - component adr8 = MontgomeryAdd(); - -// in[0] -> 1*BASE - - mux.c[0][0] <== base[0]; - mux.c[1][0] <== base[1]; - -// in[1] -> 2*BASE - dbl2.in[0] <== base[0]; - dbl2.in[1] <== base[1]; - mux.c[0][1] <== dbl2.out[0]; - mux.c[1][1] <== dbl2.out[1]; - -// in[2] -> 3*BASE - adr3.in1[0] <== base[0]; - adr3.in1[1] <== base[1]; - adr3.in2[0] <== dbl2.out[0]; - adr3.in2[1] <== dbl2.out[1]; - mux.c[0][2] <== adr3.out[0]; - mux.c[1][2] <== adr3.out[1]; - -// in[3] -> 4*BASE - adr4.in1[0] <== base[0]; - adr4.in1[1] <== base[1]; - adr4.in2[0] <== adr3.out[0]; - adr4.in2[1] <== adr3.out[1]; - mux.c[0][3] <== adr4.out[0]; - mux.c[1][3] <== adr4.out[1]; - -// in[4] -> 5*BASE - adr5.in1[0] <== base[0]; - adr5.in1[1] <== base[1]; - adr5.in2[0] <== adr4.out[0]; - adr5.in2[1] <== adr4.out[1]; - mux.c[0][4] <== adr5.out[0]; - mux.c[1][4] <== adr5.out[1]; - -// in[5] -> 6*BASE - adr6.in1[0] <== base[0]; - adr6.in1[1] <== base[1]; - adr6.in2[0] <== adr5.out[0]; - adr6.in2[1] <== adr5.out[1]; - mux.c[0][5] <== adr6.out[0]; - mux.c[1][5] <== adr6.out[1]; - -// in[6] -> 7*BASE - adr7.in1[0] <== base[0]; - adr7.in1[1] <== base[1]; - adr7.in2[0] <== adr6.out[0]; - adr7.in2[1] <== adr6.out[1]; - mux.c[0][6] <== adr7.out[0]; - mux.c[1][6] <== adr7.out[1]; - -// in[7] -> 8*BASE - adr8.in1[0] <== base[0]; - adr8.in1[1] <== base[1]; - adr8.in2[0] <== adr7.out[0]; - adr8.in2[1] <== adr7.out[1]; - mux.c[0][7] <== adr8.out[0]; - mux.c[1][7] <== adr8.out[1]; - - out8[0] <== adr8.out[0]; - out8[1] <== adr8.out[1]; - - out[0] <== mux.out[0]; - out[1] <== - mux.out[1]*2*in[3] + mux.out[1]; // Negate y if in[3] is one -} - - -template Segment(nWindows) { - signal input in[nWindows*4]; - signal input base[2]; - signal output out[2]; - - var i; - var j; - - // Convert the base to montgomery - - component e2m = Edwards2Montgomery(); - e2m.in[0] <== base[0]; - e2m.in[1] <== base[1]; - - component windows[nWindows]; - component doublers1[nWindows-1]; - component doublers2[nWindows-1]; - component adders[nWindows-1]; - for (i=0; i 1) { - m2e.in[0] <== adders[nWindows-2].out[0]; - m2e.in[1] <== adders[nWindows-2].out[1]; - } else { - m2e.in[0] <== windows[0].out[0]; - m2e.in[1] <== windows[0].out[1]; - } - - out[0] <== m2e.out[0]; - out[1] <== m2e.out[1]; -} - -template Pedersen(n) { - signal input in[n]; - signal output out[2]; - - var BASE[10][2] = [ - [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], - [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], - [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], - [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], - [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], - [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], - [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], - [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], - [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], - [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] - - ]; - - var nSegments = ((n-1)\200)+1; - - component segments[nSegments]; - - var i; - var j; - var nBits; - var nWindows; - for (i=0; i1) { - packPoint.in[0] <== adders[nSegments-2].xout; - packPoint.in[1] <== adders[nSegments-2].yout; - } else { - packPoint.in[0] <== segments[0].out[0]; - packPoint.in[1] <== segments[0].out[1]; - } - - out[0] <== packPoint.out[0]; - out[1] <== packPoint.out[1]; -*/ - - if (nSegments>1) { - out[0] <== adders[nSegments-2].xout; - out[1] <== adders[nSegments-2].yout; - } else { - out[0] <== segments[0].out[0]; - out[1] <== segments[0].out[1]; - } -} - diff --git a/node_modules/circomlib/circuits/pedersen_old.circom b/node_modules/circomlib/circuits/pedersen_old.circom deleted file mode 100644 index c338e44..0000000 --- a/node_modules/circomlib/circuits/pedersen_old.circom +++ /dev/null @@ -1,68 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "escalarmul.circom"; - -template Pedersen(n) { - signal input in[n]; - signal output out[2]; - - var nexps = ((n-1) \ 250) + 1; - var nlastbits = n - (nexps-1)*250; - - component escalarMuls[nexps]; - - var PBASE[10][2] = [ - [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], - [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], - [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], - [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], - [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], - [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], - [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], - [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], - [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], - [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] - - ]; - - var i; - var j; - var nexpbits; - for (i=0; i out[0]; - escalarMuls[nexps-1].out[1] ==> out[1]; -} diff --git a/node_modules/circomlib/circuits/pointbits.circom b/node_modules/circomlib/circuits/pointbits.circom deleted file mode 100644 index fa6007d..0000000 --- a/node_modules/circomlib/circuits/pointbits.circom +++ /dev/null @@ -1,164 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "bitify.circom"; -include "aliascheck.circom"; -include "compconstant.circom"; -include "babyjub.circom"; - - -function sqrt(n) { - - if (n == 0) { - return 0; - } - - // Test that have solution - var res = n ** ((-1) >> 1); -// if (res!=1) assert(false, "SQRT does not exists"); - if (res!=1) return 0; - - var m = 28; - var c = 19103219067921713944291392827692070036145651957329286315305642004821462161904; - var t = n ** 81540058820840996586704275553141814055101440848469862132140264610111; - var r = n ** ((81540058820840996586704275553141814055101440848469862132140264610111+1)>>1); - var sq; - var i; - var b; - var j; - - while ((r != 0)&&(t != 1)) { - sq = t*t; - i = 1; - while (sq!=1) { - i++; - sq = sq*sq; - } - - // b = c ^ m-i-1 - b = c; - for (j=0; j< m-i-1; j ++) b = b*b; - - m = i; - c = b*b; - t = t*c; - r = r*b; - } - - if (r < 0 ) { - r = -r; - } - - return r; -} - - -template Bits2Point() { - signal input in[256]; - signal output out[2]; -} - -template Bits2Point_Strict() { - signal input in[256]; - signal output out[2]; - - var i; - - // Check aliasing - component aliasCheckY = AliasCheck(); - for (i=0; i<254; i++) { - aliasCheckY.in[i] <== in[i]; - } - in[254] === 0; - - component b2nY = Bits2Num(254); - for (i=0; i<254; i++) { - b2nY.in[i] <== in[i]; - } - - out[1] <== b2nY.out; - - var a = 168700; - var d = 168696; - - var y2 = out[1] * out[1]; - - var x = sqrt( (1-y2)/(a - d*y2) ); - - if (in[255] == 1) x = -x; - - out[0] <-- x; - - component babyCheck = BabyCheck(); - babyCheck.x <== out[0]; - babyCheck.y <== out[1]; - - component n2bX = Num2Bits(254); - n2bX.in <== out[0]; - component aliasCheckX = AliasCheck(); - for (i=0; i<254; i++) { - aliasCheckX.in[i] <== n2bX.out[i]; - } - - component signCalc = CompConstant(10944121435919637611123202872628637544274182200208017171849102093287904247808); - for (i=0; i<254; i++) { - signCalc.in[i] <== n2bX.out[i]; - } - - signCalc.out === in[255]; -} - - -template Point2Bits() { - signal input in[2]; - signal output out[256]; - - -} - -template Point2Bits_Strict() { - signal input in[2]; - signal output out[256]; - - var i; - - component n2bX = Num2Bits(254); - n2bX.in <== in[0]; - component n2bY = Num2Bits(254); - n2bY.in <== in[1]; - - component aliasCheckX = AliasCheck(); - component aliasCheckY = AliasCheck(); - for (i=0; i<254; i++) { - aliasCheckX.in[i] <== n2bX.out[i]; - aliasCheckY.in[i] <== n2bY.out[i]; - } - - component signCalc = CompConstant(10944121435919637611123202872628637544274182200208017171849102093287904247808); - for (i=0; i<254; i++) { - signCalc.in[i] <== n2bX.out[i]; - } - - for (i=0; i<254; i++) { - out[i] <== n2bY.out[i]; - } - out[254] <== 0; - out[255] <== signCalc.out; -} diff --git a/node_modules/circomlib/circuits/poseidon.circom b/node_modules/circomlib/circuits/poseidon.circom deleted file mode 100644 index 1c45ab9..0000000 --- a/node_modules/circomlib/circuits/poseidon.circom +++ /dev/null @@ -1,208 +0,0 @@ -pragma circom 2.0.0; - -include "./poseidon_constants.circom"; - -template Sigma() { - signal input in; - signal output out; - - signal in2; - signal in4; - - in2 <== in*in; - in4 <== in2*in2; - - out <== in4*in; -} - -template Ark(t, C, r) { - signal input in[t]; - signal output out[t]; - - for (var i=0; i0) { - ark[0].in[j] <== inputs[j-1]; - } else { - ark[0].in[j] <== initialState; - } - } - - for (var r = 0; r < nRoundsF\2-1; r++) { - for (var j=0; j0) { - ark[i].in[j] <== inputs[j-1]; - } else { - ark[i].in[j] <== 0; - } - } else { - ark[i].in[j] <== mix[i-1].out[j]; - } - } - - if (i < nRoundsF/2 || i >= nRoundsP + nRoundsF/2) { - k = i < nRoundsF/2 ? i : i - nRoundsP; - mix[i] = Mix(t, M); - for (var j=0; j. -*/ - -/* Ch - -000 0 -001 1 -010 0 -011 1 -100 0 -101 0 -110 1 -111 1 - -out = a&b ^ (!a)&c => - -out = a*(b-c) + c - -*/ -pragma circom 2.0.0; - -template Ch_t(n) { - signal input a[n]; - signal input b[n]; - signal input c[n]; - signal output out[n]; - - for (var k=0; k. -*/ -pragma circom 2.0.0; - -template H(x) { - signal output out[32]; - var c[8] = [0x6a09e667, - 0xbb67ae85, - 0x3c6ef372, - 0xa54ff53a, - 0x510e527f, - 0x9b05688c, - 0x1f83d9ab, - 0x5be0cd19]; - - for (var i=0; i<32; i++) { - out[i] <== (c[x] >> i) & 1; - } -} - -template K(x) { - signal output out[32]; - var c[64] = [ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 - ]; - - for (var i=0; i<32; i++) { - out[i] <== (c[x] >> i) & 1; - } -} diff --git a/node_modules/circomlib/circuits/sha256/main.circom b/node_modules/circomlib/circuits/sha256/main.circom deleted file mode 100644 index 88d69d6..0000000 --- a/node_modules/circomlib/circuits/sha256/main.circom +++ /dev/null @@ -1,35 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "sha256_2.circom"; - -template Main() { - signal input a; - signal input b; - signal output out; - - component sha256_2 = Sha256_2(); - - sha256_2.a <== a; - sha256_2.b <== a; - out <== sha256_2.out; -} - -component main = Main(); diff --git a/node_modules/circomlib/circuits/sha256/maj.circom b/node_modules/circomlib/circuits/sha256/maj.circom deleted file mode 100644 index 1c0940c..0000000 --- a/node_modules/circomlib/circuits/sha256/maj.circom +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* Maj function for sha256 - -out = a&b ^ a&c ^ b&c => - -out = a*b + a*c + b*c - 2*a*b*c => - -out = a*( b + c - 2*b*c ) + b*c => - -mid = b*c -out = a*( b + c - 2*mid ) + mid - -*/ -pragma circom 2.0.0; - -template Maj_t(n) { - signal input a[n]; - signal input b[n]; - signal input c[n]; - signal output out[n]; - signal mid[n]; - - for (var k=0; k. -*/ -pragma circom 2.0.0; - -template RotR(n, r) { - signal input in[n]; - signal output out[n]; - - for (var i=0; i> k)&1; - } - - component ha0 = H(0); - component hb0 = H(1); - component hc0 = H(2); - component hd0 = H(3); - component he0 = H(4); - component hf0 = H(5); - component hg0 = H(6); - component hh0 = H(7); - - component sha256compression[nBlocks]; - - for (i=0; i. -*/ -pragma circom 2.0.0; - -include "constants.circom"; -include "sha256compression.circom"; -include "../bitify.circom"; - -template Sha256_2() { - signal input a; - signal input b; - signal output out; - - var i; - var k; - - component bits2num = Bits2Num(216); - component num2bits[2]; - - num2bits[0] = Num2Bits(216); - num2bits[1] = Num2Bits(216); - - num2bits[0].in <== a; - num2bits[1].in <== b; - - - component sha256compression = Sha256compression() ; - - component ha0 = H(0); - component hb0 = H(1); - component hc0 = H(2); - component hd0 = H(3); - component he0 = H(4); - component hf0 = H(5); - component hg0 = H(6); - component hh0 = H(7); - - for (k=0; k<32; k++ ) { - sha256compression.hin[0*32+k] <== ha0.out[k]; - sha256compression.hin[1*32+k] <== hb0.out[k]; - sha256compression.hin[2*32+k] <== hc0.out[k]; - sha256compression.hin[3*32+k] <== hd0.out[k]; - sha256compression.hin[4*32+k] <== he0.out[k]; - sha256compression.hin[5*32+k] <== hf0.out[k]; - sha256compression.hin[6*32+k] <== hg0.out[k]; - sha256compression.hin[7*32+k] <== hh0.out[k]; - } - - for (i=0; i<216; i++) { - sha256compression.inp[i] <== num2bits[0].out[215-i]; - sha256compression.inp[i+216] <== num2bits[1].out[215-i]; - } - - sha256compression.inp[432] <== 1; - - for (i=433; i<503; i++) { - sha256compression.inp[i] <== 0; - } - - sha256compression.inp[503] <== 1; - sha256compression.inp[504] <== 1; - sha256compression.inp[505] <== 0; - sha256compression.inp[506] <== 1; - sha256compression.inp[507] <== 1; - sha256compression.inp[508] <== 0; - sha256compression.inp[509] <== 0; - sha256compression.inp[510] <== 0; - sha256compression.inp[511] <== 0; - - for (i=0; i<216; i++) { - bits2num.in[i] <== sha256compression.out[255-i]; - } - - out <== bits2num.out; -} diff --git a/node_modules/circomlib/circuits/sha256/sha256compression.circom b/node_modules/circomlib/circuits/sha256/sha256compression.circom deleted file mode 100644 index 98f7c98..0000000 --- a/node_modules/circomlib/circuits/sha256/sha256compression.circom +++ /dev/null @@ -1,166 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "constants.circom"; -include "t1.circom"; -include "t2.circom"; -include "../binsum.circom"; -include "sigmaplus.circom"; -include "sha256compression_function.circom"; - - -template Sha256compression() { - signal input hin[256]; - signal input inp[512]; - signal output out[256]; - signal a[65][32]; - signal b[65][32]; - signal c[65][32]; - signal d[65][32]; - signal e[65][32]; - signal f[65][32]; - signal g[65][32]; - signal h[65][32]; - signal w[64][32]; - - - var outCalc[256] = sha256compression(hin, inp); - - var i; - for (i=0; i<256; i++) out[i] <-- outCalc[i]; - - component sigmaPlus[48]; - for (i=0; i<48; i++) sigmaPlus[i] = SigmaPlus(); - - component ct_k[64]; - for (i=0; i<64; i++) ct_k[i] = K(i); - - component t1[64]; - for (i=0; i<64; i++) t1[i] = T1(); - - component t2[64]; - for (i=0; i<64; i++) t2[i] = T2(); - - component suma[64]; - for (i=0; i<64; i++) suma[i] = BinSum(32, 2); - - component sume[64]; - for (i=0; i<64; i++) sume[i] = BinSum(32, 2); - - component fsum[8]; - for (i=0; i<8; i++) fsum[i] = BinSum(32, 2); - - var k; - var t; - - for (t=0; t<64; t++) { - if (t<16) { - for (k=0; k<32; k++) { - w[t][k] <== inp[t*32+31-k]; - } - } else { - for (k=0; k<32; k++) { - sigmaPlus[t-16].in2[k] <== w[t-2][k]; - sigmaPlus[t-16].in7[k] <== w[t-7][k]; - sigmaPlus[t-16].in15[k] <== w[t-15][k]; - sigmaPlus[t-16].in16[k] <== w[t-16][k]; - } - - for (k=0; k<32; k++) { - w[t][k] <== sigmaPlus[t-16].out[k]; - } - } - } - - for (k=0; k<32; k++ ) { - a[0][k] <== hin[k]; - b[0][k] <== hin[32*1 + k]; - c[0][k] <== hin[32*2 + k]; - d[0][k] <== hin[32*3 + k]; - e[0][k] <== hin[32*4 + k]; - f[0][k] <== hin[32*5 + k]; - g[0][k] <== hin[32*6 + k]; - h[0][k] <== hin[32*7 + k]; - } - - for (t = 0; t<64; t++) { - for (k=0; k<32; k++) { - t1[t].h[k] <== h[t][k]; - t1[t].e[k] <== e[t][k]; - t1[t].f[k] <== f[t][k]; - t1[t].g[k] <== g[t][k]; - t1[t].k[k] <== ct_k[t].out[k]; - t1[t].w[k] <== w[t][k]; - - t2[t].a[k] <== a[t][k]; - t2[t].b[k] <== b[t][k]; - t2[t].c[k] <== c[t][k]; - } - - for (k=0; k<32; k++) { - sume[t].in[0][k] <== d[t][k]; - sume[t].in[1][k] <== t1[t].out[k]; - - suma[t].in[0][k] <== t1[t].out[k]; - suma[t].in[1][k] <== t2[t].out[k]; - } - - for (k=0; k<32; k++) { - h[t+1][k] <== g[t][k]; - g[t+1][k] <== f[t][k]; - f[t+1][k] <== e[t][k]; - e[t+1][k] <== sume[t].out[k]; - d[t+1][k] <== c[t][k]; - c[t+1][k] <== b[t][k]; - b[t+1][k] <== a[t][k]; - a[t+1][k] <== suma[t].out[k]; - } - } - - for (k=0; k<32; k++) { - fsum[0].in[0][k] <== hin[32*0+k]; - fsum[0].in[1][k] <== a[64][k]; - fsum[1].in[0][k] <== hin[32*1+k]; - fsum[1].in[1][k] <== b[64][k]; - fsum[2].in[0][k] <== hin[32*2+k]; - fsum[2].in[1][k] <== c[64][k]; - fsum[3].in[0][k] <== hin[32*3+k]; - fsum[3].in[1][k] <== d[64][k]; - fsum[4].in[0][k] <== hin[32*4+k]; - fsum[4].in[1][k] <== e[64][k]; - fsum[5].in[0][k] <== hin[32*5+k]; - fsum[5].in[1][k] <== f[64][k]; - fsum[6].in[0][k] <== hin[32*6+k]; - fsum[6].in[1][k] <== g[64][k]; - fsum[7].in[0][k] <== hin[32*7+k]; - fsum[7].in[1][k] <== h[64][k]; - } - - for (k=0; k<32; k++) { - out[31-k] === fsum[0].out[k]; - out[32+31-k] === fsum[1].out[k]; - out[64+31-k] === fsum[2].out[k]; - out[96+31-k] === fsum[3].out[k]; - out[128+31-k] === fsum[4].out[k]; - out[160+31-k] === fsum[5].out[k]; - out[192+31-k] === fsum[6].out[k]; - out[224+31-k] === fsum[7].out[k]; - } -} diff --git a/node_modules/circomlib/circuits/sha256/sha256compression_function.circom b/node_modules/circomlib/circuits/sha256/sha256compression_function.circom deleted file mode 100644 index 9f8d5b8..0000000 --- a/node_modules/circomlib/circuits/sha256/sha256compression_function.circom +++ /dev/null @@ -1,112 +0,0 @@ -// signal input hin[256]; -// signal input inp[512]; -// signal output out[256]; -pragma circom 2.0.0; - -function rrot(x, n) { - return ((x >> n) | (x << (32-n))) & 0xFFFFFFFF; -} - -function bsigma0(x) { - return rrot(x,2) ^ rrot(x,13) ^ rrot(x,22); -} - -function bsigma1(x) { - return rrot(x,6) ^ rrot(x,11) ^ rrot(x,25); -} - -function ssigma0(x) { - return rrot(x,7) ^ rrot(x,18) ^ (x >> 3); -} - -function ssigma1(x) { - return rrot(x,17) ^ rrot(x,19) ^ (x >> 10); -} - -function Maj(x, y, z) { - return (x&y) ^ (x&z) ^ (y&z); -} - -function Ch(x, y, z) { - return (x & y) ^ ((0xFFFFFFFF ^x) & z); -} - -function sha256K(i) { - var k[64] = [ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 - ]; - return k[i]; -} - -function sha256compression(hin, inp) { - var H[8]; - var a; - var b; - var c; - var d; - var e; - var f; - var g; - var h; - var out[256]; - for (var i=0; i<8; i++) { - H[i] = 0; - for (var j=0; j<32; j++) { - H[i] += hin[i*32+j] << j; - } - } - a=H[0]; - b=H[1]; - c=H[2]; - d=H[3]; - e=H[4]; - f=H[5]; - g=H[6]; - h=H[7]; - var w[64]; - var T1; - var T2; - for (var i=0; i<64; i++) { - if (i<16) { - w[i]=0; - for (var j=0; j<32; j++) { - w[i] += inp[i*32+31-j]<> j) & 1; - } - } - return out; -} diff --git a/node_modules/circomlib/circuits/sha256/shift.circom b/node_modules/circomlib/circuits/sha256/shift.circom deleted file mode 100644 index 317cd32..0000000 --- a/node_modules/circomlib/circuits/sha256/shift.circom +++ /dev/null @@ -1,33 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -template ShR(n, r) { - signal input in[n]; - signal output out[n]; - - for (var i=0; i= n) { - out[i] <== 0; - } else { - out[i] <== in[ i+r ]; - } - } -} - diff --git a/node_modules/circomlib/circuits/sha256/sigma.circom b/node_modules/circomlib/circuits/sha256/sigma.circom deleted file mode 100644 index bcb0b80..0000000 --- a/node_modules/circomlib/circuits/sha256/sigma.circom +++ /dev/null @@ -1,77 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "xor3.circom"; -include "rotate.circom"; -include "shift.circom"; - -template SmallSigma(ra, rb, rc) { - signal input in[32]; - signal output out[32]; - var k; - - component rota = RotR(32, ra); - component rotb = RotR(32, rb); - component shrc = ShR(32, rc); - - for (k=0; k<32; k++) { - rota.in[k] <== in[k]; - rotb.in[k] <== in[k]; - shrc.in[k] <== in[k]; - } - - component xor3 = Xor3(32); - for (k=0; k<32; k++) { - xor3.a[k] <== rota.out[k]; - xor3.b[k] <== rotb.out[k]; - xor3.c[k] <== shrc.out[k]; - } - - for (k=0; k<32; k++) { - out[k] <== xor3.out[k]; - } -} - -template BigSigma(ra, rb, rc) { - signal input in[32]; - signal output out[32]; - var k; - - component rota = RotR(32, ra); - component rotb = RotR(32, rb); - component rotc = RotR(32, rc); - for (k=0; k<32; k++) { - rota.in[k] <== in[k]; - rotb.in[k] <== in[k]; - rotc.in[k] <== in[k]; - } - - component xor3 = Xor3(32); - - for (k=0; k<32; k++) { - xor3.a[k] <== rota.out[k]; - xor3.b[k] <== rotb.out[k]; - xor3.c[k] <== rotc.out[k]; - } - - for (k=0; k<32; k++) { - out[k] <== xor3.out[k]; - } -} diff --git a/node_modules/circomlib/circuits/sha256/sigmaplus.circom b/node_modules/circomlib/circuits/sha256/sigmaplus.circom deleted file mode 100644 index 35e3300..0000000 --- a/node_modules/circomlib/circuits/sha256/sigmaplus.circom +++ /dev/null @@ -1,50 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "../binsum.circom"; -include "sigma.circom"; - -template SigmaPlus() { - signal input in2[32]; - signal input in7[32]; - signal input in15[32]; - signal input in16[32]; - signal output out[32]; - var k; - - component sigma1 = SmallSigma(17,19,10); - component sigma0 = SmallSigma(7, 18, 3); - for (k=0; k<32; k++) { - sigma1.in[k] <== in2[k]; - sigma0.in[k] <== in15[k]; - } - - component sum = BinSum(32, 4); - for (k=0; k<32; k++) { - sum.in[0][k] <== sigma1.out[k]; - sum.in[1][k] <== in7[k]; - sum.in[2][k] <== sigma0.out[k]; - sum.in[3][k] <== in16[k]; - } - - for (k=0; k<32; k++) { - out[k] <== sum.out[k]; - } -} diff --git a/node_modules/circomlib/circuits/sha256/t1.circom b/node_modules/circomlib/circuits/sha256/t1.circom deleted file mode 100644 index e606772..0000000 --- a/node_modules/circomlib/circuits/sha256/t1.circom +++ /dev/null @@ -1,58 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "../binsum.circom"; -include "sigma.circom"; -include "ch.circom"; - -template T1() { - signal input h[32]; - signal input e[32]; - signal input f[32]; - signal input g[32]; - signal input k[32]; - signal input w[32]; - signal output out[32]; - - var ki; - - component ch = Ch_t(32); - component bigsigma1 = BigSigma(6, 11, 25); - - for (ki=0; ki<32; ki++) { - bigsigma1.in[ki] <== e[ki]; - ch.a[ki] <== e[ki]; - ch.b[ki] <== f[ki]; - ch.c[ki] <== g[ki]; - } - - component sum = BinSum(32, 5); - for (ki=0; ki<32; ki++) { - sum.in[0][ki] <== h[ki]; - sum.in[1][ki] <== bigsigma1.out[ki]; - sum.in[2][ki] <== ch.out[ki]; - sum.in[3][ki] <== k[ki]; - sum.in[4][ki] <== w[ki]; - } - - for (ki=0; ki<32; ki++) { - out[ki] <== sum.out[ki]; - } -} diff --git a/node_modules/circomlib/circuits/sha256/t2.circom b/node_modules/circomlib/circuits/sha256/t2.circom deleted file mode 100644 index 5a83d59..0000000 --- a/node_modules/circomlib/circuits/sha256/t2.circom +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "../binsum.circom"; -include "sigma.circom"; -include "maj.circom"; - -template T2() { - signal input a[32]; - signal input b[32]; - signal input c[32]; - signal output out[32]; - var k; - - component bigsigma0 = BigSigma(2, 13, 22); - component maj = Maj_t(32); - for (k=0; k<32; k++) { - bigsigma0.in[k] <== a[k]; - maj.a[k] <== a[k]; - maj.b[k] <== b[k]; - maj.c[k] <== c[k]; - } - - component sum = BinSum(32, 2); - - for (k=0; k<32; k++) { - sum.in[0][k] <== bigsigma0.out[k]; - sum.in[1][k] <== maj.out[k]; - } - - for (k=0; k<32; k++) { - out[k] <== sum.out[k]; - } -} diff --git a/node_modules/circomlib/circuits/sha256/xor3.circom b/node_modules/circomlib/circuits/sha256/xor3.circom deleted file mode 100644 index 9c21e4e..0000000 --- a/node_modules/circomlib/circuits/sha256/xor3.circom +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* Xor3 function for sha256 - -out = a ^ b ^ c => - -out = a+b+c - 2*a*b - 2*a*c - 2*b*c + 4*a*b*c => - -out = a*( 1 - 2*b - 2*c + 4*b*c ) + b + c - 2*b*c => - -mid = b*c -out = a*( 1 - 2*b -2*c + 4*mid ) + b + c - 2 * mid - -*/ -pragma circom 2.0.0; - -template Xor3(n) { - signal input a[n]; - signal input b[n]; - signal input c[n]; - signal output out[n]; - signal mid[n]; - - for (var k=0; k. -*/ -pragma circom 2.0.0; - -include "compconstant.circom"; - -template Sign() { - signal input in[254]; - signal output sign; - - component comp = CompConstant(10944121435919637611123202872628637544274182200208017171849102093287904247808); - - var i; - - for (i=0; i<254; i++) { - comp.in[i] <== in[i]; - } - - sign <== comp.out; -} diff --git a/node_modules/circomlib/circuits/smt/smthash_mimc.circom b/node_modules/circomlib/circuits/smt/smthash_mimc.circom deleted file mode 100644 index 272e527..0000000 --- a/node_modules/circomlib/circuits/smt/smthash_mimc.circom +++ /dev/null @@ -1,58 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "../mimc.circom"; - - -/* - Hash1 = H(1 | key | value) - */ - -template SMTHash1() { - signal input key; - signal input value; - signal output out; - - component h = MultiMiMC7(2, 91); // Constant - h.in[0] <== key; - h.in[1] <== value; - h.k <== 1; - - out <== h.out; -} - -/* - This component is used to create the 2 nodes. - - Hash2 = H(Hl | Hr) - */ - -template SMTHash2() { - signal input L; - signal input R; - signal output out; - - component h = MultiMiMC7(2, 91); // Constant - h.in[0] <== L; - h.in[1] <== R; - h.k <== 0; - - out <== h.out; -} diff --git a/node_modules/circomlib/circuits/smt/smthash_poseidon.circom b/node_modules/circomlib/circuits/smt/smthash_poseidon.circom deleted file mode 100644 index aa6b8b3..0000000 --- a/node_modules/circomlib/circuits/smt/smthash_poseidon.circom +++ /dev/null @@ -1,57 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ -pragma circom 2.0.0; - -include "../poseidon.circom"; - - -/* - Hash1 = H(1 | key | value) - */ - -template SMTHash1() { - signal input key; - signal input value; - signal output out; - - component h = Poseidon(3); // Constant - h.inputs[0] <== key; - h.inputs[1] <== value; - h.inputs[2] <== 1; - - out <== h.out; -} - -/* - This component is used to create the 2 nodes. - - Hash2 = H(Hl | Hr) - */ - -template SMTHash2() { - signal input L; - signal input R; - signal output out; - - component h = Poseidon(2); // Constant - h.inputs[0] <== L; - h.inputs[1] <== R; - - out <== h.out; -} diff --git a/node_modules/circomlib/circuits/smt/smtlevins.circom b/node_modules/circomlib/circuits/smt/smtlevins.circom deleted file mode 100644 index a03ae50..0000000 --- a/node_modules/circomlib/circuits/smt/smtlevins.circom +++ /dev/null @@ -1,103 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* - -This component finds the level where the oldInsert is done. -The rules are: - -levIns[i] == 1 if its level and all the child levels have a sibling of 0 and -the parent level has a sibling != 0. Considere that the root level always has -a parent with a sibling != 0. - - - ┌──────────────┐ - │ │ - │ │───▶ levIns[0] <== (1-done[i]) - │ │ - └──────────────┘ - ▲ - │ - │ - done[0] - - - - done[i-1] <== levIns[i] + done[i] - ▲ - │ - │ - ┌───────────┐ ┌──────────────┐ - │ │ │ │ - sibling[i-1]───▶│IsZero[i-1]│─▶│ │───▶ levIns[i] <== (1-done[i])*(1-isZero[i-1].out) - │ │ │ │ - └───────────┘ └──────────────┘ - ▲ - │ - │ - done[i] - - - - done[n-2] <== levIns[n-1] - ▲ - │ - │ - ┌───────────┐ ┌──────────────┐ - │ │ │ │ - sibling[n-2]───▶│IsZero[n-2]│─▶│ │────▶ levIns[n-1] <== (1-isZero[n-2].out) - │ │ │ │ - └───────────┘ └──────────────┘ - - ┌───────────┐ - │ │ - sibling[n-1]───▶│IsZero[n-1]│────▶ === 0 - │ │ - └───────────┘ - - */ - pragma circom 2.0.0; - -template SMTLevIns(nLevels) { - signal input enabled; - signal input siblings[nLevels]; - signal output levIns[nLevels]; - signal done[nLevels-1]; // Indicates if the insLevel has aready been detected. - - var i; - - component isZero[nLevels]; - - for (i=0; i0; i--) { - levIns[i] <== (1-done[i])*(1-isZero[i-1].out); - done[i-1] <== levIns[i] + done[i]; - } - - levIns[0] <== (1-done[0]); -} diff --git a/node_modules/circomlib/circuits/smt/smtprocessor.circom b/node_modules/circomlib/circuits/smt/smtprocessor.circom deleted file mode 100644 index b75f17c..0000000 --- a/node_modules/circomlib/circuits/smt/smtprocessor.circom +++ /dev/null @@ -1,261 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/*************************************************************************************************** - -SMTProcessor: Sparse Merkle Tree processor is a component to verify an insert/update/delete elements -into the Sparse Merkle tree. - - -Insert to an empty leaf -======================= - - STATE OLD STATE NEW STATE - ===== ========= ========= - - oldRoot newRoot - ▲ ▲ - │ │ - ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ - top │Sibling├────▶┃ Hash ┃◀─┐ │Sibling├────▶┃ Hash ┃◀─┐ - └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ - │ │ - │ │ - ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ - top ┌─────▶┃ Hash ┃◀──┤Sibling│ ┌─────▶┃ Hash ┃◀──┤Sibling│ - │ ┗━━━━━━━┛ └───────┘ │ ┗━━━━━━━┛ └───────┘ - │ │ - │ │ - ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ - top │Sibling├──▶┃ Hash ┃◀─────┐ │Sibling├──▶┃ Hash ┃◀─────┐ - └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ - │ │ - │ │ - ┌────┴────┐ ┌────┴────┐ - old0 │ 0 │ │New1Leaf │ - └─────────┘ └─────────┘ - - - ┏━━━━━━━┓ ┏━━━━━━━┓ - na ┃ Hash ┃ ┃ Hash ┃ - ┗━━━━━━━┛ ┗━━━━━━━┛ - - - ┏━━━━━━━┓ ┏━━━━━━━┓ - na ┃ Hash ┃ ┃ Hash ┃ - ┗━━━━━━━┛ ┗━━━━━━━┛ - - - -Insert to a used leaf. -===================== - - STATE OLD STATE NEW STATE - ===== ========= ========= - - - oldRoot newRoot - ▲ ▲ - │ │ - ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ - top │Sibling├────▶┃ Hash ┃◀─┐ │Sibling├────▶┃ Hash ┃◀─┐ - └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ - │ │ - │ │ - ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ - top ┌─────▶┃ Hash ┃◀──┤Sibling│ ┌─────▶┃ Hash ┃◀──┤Sibling│ - │ ┗━━━━━━━┛ └───────┘ │ ┗━━━━━━━┛ └───────┘ - │ │ - │ │ - ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ - top │Sibling├──▶┃ Hash ┃◀─────┐ │Sibling├──▶┃ Hash ┃◀─────┐ - └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ - │ │ - │ │ - ┌────┴────┐ ┏━━━┻━━━┓ ┌───────┐ - bot │Old1Leaf │ ┌─────▶┃ Hash ┃◀──┼─ 0 │ - └─────────┘ │ ┗━━━━━━━┛ └───────┘ - │ - │ - ┏━━━━━━━┓ ┌───────┐ ┏━━━┻━━━┓ - bot ┃ Hash ┃ │ 0 ─┼──▶┃ Hash ┃◀─────┐ - ┗━━━━━━━┛ └───────┘ ┗━━━━━━━┛ │ - │ - │ - ┏━━━━━━━┓ ┏━━━┻━━━┓ ┌───────┐ - bot ┃ Hash ┃ ┌─────▶┃ Hash ┃◀──│ 0 │ - ┗━━━━━━━┛ │ ┗━━━━━━━┛ └───────┘ - │ - │ - ┏━━━━━━━┓ ┌─────────┐ ┏━━━┻━━━┓ ┌─────────┐ - new1 ┃ Hash ┃ │Old1Leaf ├──▶┃ Hash ┃◀──│New1Leaf │ - ┗━━━━━━━┛ └─────────┘ ┗━━━━━━━┛ └─────────┘ - - - ┏━━━━━━━┓ ┏━━━━━━━┓ - na ┃ Hash ┃ ┃ Hash ┃ - ┗━━━━━━━┛ ┗━━━━━━━┛ - - - ┏━━━━━━━┓ ┏━━━━━━━┓ - na ┃ Hash ┃ ┃ Hash ┃ - ┗━━━━━━━┛ ┗━━━━━━━┛ - - -Fnction -fnc[0] fnc[1] -0 0 NOP -0 1 UPDATE -1 0 INSERT -1 1 DELETE - - -***************************************************************************************************/ -pragma circom 2.0.0; - -include "../gates.circom"; -include "../bitify.circom"; -include "../comparators.circom"; -include "../switcher.circom"; -include "smtlevins.circom"; -include "smtprocessorlevel.circom"; -include "smtprocessorsm.circom"; -include "smthash_poseidon.circom"; - -template SMTProcessor(nLevels) { - signal input oldRoot; - signal output newRoot; - signal input siblings[nLevels]; - signal input oldKey; - signal input oldValue; - signal input isOld0; - signal input newKey; - signal input newValue; - signal input fnc[2]; - - signal enabled; - - var i; - - enabled <== fnc[0] + fnc[1] - fnc[0]*fnc[1]; - - component hash1Old = SMTHash1(); - hash1Old.key <== oldKey; - hash1Old.value <== oldValue; - - component hash1New = SMTHash1(); - hash1New.key <== newKey; - hash1New.value <== newValue; - - component n2bOld = Num2Bits_strict(); - component n2bNew = Num2Bits_strict(); - - n2bOld.in <== oldKey; - n2bNew.in <== newKey; - - component smtLevIns = SMTLevIns(nLevels); - for (i=0; i. -*/ - -/****** - -SMTProcessorLevel - -This circuit has 2 hash - -Outputs according to the state. - -State oldRoot newRoot -===== ======= ======= -top H'(oldChild, sibling) H'(newChild, sibling) -old0 0 new1leaf -bot old1leaf H'(newChild, 0) -new1 old1leaf H'(new1leaf, old1leaf) -na 0 0 - -upd old1leaf new1leaf - -H' is the Hash function with the inputs shifted acordingly. - -*****/ -pragma circom 2.0.0; - - -template SMTProcessorLevel() { - signal input st_top; - signal input st_old0; - signal input st_bot; - signal input st_new1; - signal input st_na; - signal input st_upd; - - signal output oldRoot; - signal output newRoot; - signal input sibling; - signal input old1leaf; - signal input new1leaf; - signal input newlrbit; - signal input oldChild; - signal input newChild; - - signal aux[4]; - - component oldProofHash = SMTHash2(); - component newProofHash = SMTHash2(); - - component oldSwitcher = Switcher(); - component newSwitcher = Switcher(); - - // Old side - - oldSwitcher.L <== oldChild; - oldSwitcher.R <== sibling; - - oldSwitcher.sel <== newlrbit; - oldProofHash.L <== oldSwitcher.outL; - oldProofHash.R <== oldSwitcher.outR; - - aux[0] <== old1leaf * (st_bot + st_new1 + st_upd); - oldRoot <== aux[0] + oldProofHash.out * st_top; - - // New side - - aux[1] <== newChild * ( st_top + st_bot); - newSwitcher.L <== aux[1] + new1leaf*st_new1; - - aux[2] <== sibling*st_top; - newSwitcher.R <== aux[2] + old1leaf*st_new1; - - newSwitcher.sel <== newlrbit; - newProofHash.L <== newSwitcher.outL; - newProofHash.R <== newSwitcher.outR; - - aux[3] <== newProofHash.out * (st_top + st_bot + st_new1); - newRoot <== aux[3] + new1leaf * (st_old0 + st_upd); -} diff --git a/node_modules/circomlib/circuits/smt/smtprocessorsm.circom b/node_modules/circomlib/circuits/smt/smtprocessorsm.circom deleted file mode 100644 index e40356f..0000000 --- a/node_modules/circomlib/circuits/smt/smtprocessorsm.circom +++ /dev/null @@ -1,165 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/*************************************************************************************************** -Each level on a SMTProcessor has a state. - -The state of the level depends on the state of te botom level and on `xor` and -`is0` signals. - -`isOldLev` 1 when is the level where oldLeaf is. - -`xor` signal is 0 if the index bit at the current level is the same in the old -and the new index, and 1 if it is different. - -`is0` signal, is 1 if we are inserting/deleting in an empty leaf and 0 if we -are inserting/deleting in a leaf that contains an element. - -The states are: - -top: While the index bits of the old and new insex in the top level is the same, whe are in the top state. -old0: When the we reach insert level, we go to old0 state -if `is0`=1. -btn: Once in insert level and `is0` =0 we go to btn or new1 level if xor=1 -new1: This level is reached when xor=1. Here is where we insert/delete the hash of the -old and the new trees with just one element. -na: Not appliable. After processing it, we go to the na level. - - -Fnction -fnc[0] fnc[1] -0 0 NOP -0 1 UPDATE -1 0 INSERT -1 1 DELETE - - - ########### - # # - ┌────────────────────────────▶# upd #─────────────────────┐ - │ ## ## │ - │ ######### │ - levIns=1 │ │ - fnc[0]=0 │ │ any - │ │ - │ │ - │ │ - │ ########### │ - │ levIns=1 # # │ - levIns=0 │ is0=1 ┌────────────▶# old0 #────────┐ │ any - ┌─────┐ │ fnc[0]=1│ ## ## │ │ ┌──────┐ - │ │ │ │ ######### │ any │ │ │ - │ ▼ │ │ │ ▼ ▼ │ - │ ########### │ │ ########### │ - │ # # ────────────┘ └────────▶# #│ - └──# top # # na # - ## ## ───────────────────┐ levIns=1 ┌──▶## ## - ######### │ is0=0 │ ######### - │ │ fnc[0]=1 │ - │ │ xor=1 ########### │ any - │ └──────────────────▶# # │ - │ # new1 #──┘ - │ ## ## - └────────────────────────────────┐ ######### - levIns=1 │ ▲ - is0=0 │ ┌─────┘ - fnc[0]=1 │ ###########│ xor=1 - xor=0 │ # # - ▼# btn # - ## ## - #########◀───────┐ - │ │ - │ │ - └────────────┘ - xor=0 - -***************************************************************************************************/ -pragma circom 2.0.0; - -template SMTProcessorSM() { - signal input xor; - signal input is0; - signal input levIns; - signal input fnc[2]; - - signal input prev_top; - signal input prev_old0; - signal input prev_bot; - signal input prev_new1; - signal input prev_na; - signal input prev_upd; - - signal output st_top; - signal output st_old0; - signal output st_bot; - signal output st_new1; - signal output st_na; - signal output st_upd; - - signal aux1; - signal aux2; - - aux1 <== prev_top * levIns; - aux2 <== aux1*fnc[0]; // prev_top * levIns * fnc[0] - - // st_top = prev_top*(1-levIns) - // = + prev_top - // - prev_top * levIns = aux1 - - st_top <== prev_top - aux1; - - // st_old0 = prev_top * levIns * is0 * fnc[0] - // = + prev_top * levIns * is0 * fnc[0] = aux2 * is0 - - st_old0 <== aux2 * is0; // prev_top * levIns * is0 * fnc[0] - - // st_new1 = prev_top * levIns * (1-is0)*fnc[0] * xor + prev_bot*xor = - // = + prev_top * levIns * fnc[0] * xor = aux2 * xor - // - prev_top * levIns * is0 * fnc[0] * xor = st_old0 * xor - // + prev_bot * xor = prev_bot * xor - - st_new1 <== (aux2 - st_old0 + prev_bot)*xor; - - - // st_bot = prev_top * levIns * (1-is0)*fnc[0] * (1-xor) + prev_bot*(1-xor); - // = + prev_top * levIns * fnc[0] - // - prev_top * levIns * is0 * fnc[0] - // - prev_top * levIns * fnc[0] * xor - // + prev_top * levIns * is0 * fnc[0] * xor - // + prev_bot - // - prev_bot * xor - - st_bot <== (1-xor) * (aux2 - st_old0 + prev_bot); - - - // st_upd = prev_top * (1-fnc[0]) *levIns; - // = + prev_top * levIns - // - prev_top * levIns * fnc[0] - - st_upd <== aux1 - aux2; - - // st_na = prev_new1 + prev_old0 + prev_na + prev_upd; - // = + prev_new1 - // + prev_old0 - // + prev_na - // + prev_upd - - st_na <== prev_new1 + prev_old0 + prev_na + prev_upd; - -} diff --git a/node_modules/circomlib/circuits/smt/smtverifier.circom b/node_modules/circomlib/circuits/smt/smtverifier.circom deleted file mode 100644 index 152eba3..0000000 --- a/node_modules/circomlib/circuits/smt/smtverifier.circom +++ /dev/null @@ -1,138 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* - -SMTVerifier is a component to verify inclusion/exclusion of an element in the tree - - -fnc: 0 -> VERIFY INCLUSION - 1 -> VERIFY NOT INCLUSION - - */ - pragma circom 2.0.0; - - -include "../gates.circom"; -include "../bitify.circom"; -include "../comparators.circom"; -include "../switcher.circom"; -include "smtlevins.circom"; -include "smtverifierlevel.circom"; -include "smtverifiersm.circom"; -include "smthash_poseidon.circom"; - -template SMTVerifier(nLevels) { - signal input enabled; - signal input root; - signal input siblings[nLevels]; - signal input oldKey; - signal input oldValue; - signal input isOld0; - signal input key; - signal input value; - signal input fnc; - - var i; - - component hash1Old = SMTHash1(); - hash1Old.key <== oldKey; - hash1Old.value <== oldValue; - - component hash1New = SMTHash1(); - hash1New.key <== key; - hash1New.value <== value; - - component n2bOld = Num2Bits_strict(); - component n2bNew = Num2Bits_strict(); - - n2bOld.in <== oldKey; - n2bNew.in <== key; - - component smtLevIns = SMTLevIns(nLevels); - for (i=0; i. -*/ - -/****** - -SMTVerifierLevel - -This circuit has 1 hash - -Outputs according to the state. - -State root -===== ======= -top H'(child, sibling) -i0 0 -iold old1leaf -inew new1leaf -na 0 - -H' is the Hash function with the inputs shifted acordingly. - -*****/ -pragma circom 2.0.0; - -template SMTVerifierLevel() { - signal input st_top; - signal input st_i0; - signal input st_iold; - signal input st_inew; - signal input st_na; - - signal output root; - signal input sibling; - signal input old1leaf; - signal input new1leaf; - signal input lrbit; - signal input child; - - signal aux[2]; - - component proofHash = SMTHash2(); - component switcher = Switcher(); - - switcher.L <== child; - switcher.R <== sibling; - - switcher.sel <== lrbit; - proofHash.L <== switcher.outL; - proofHash.R <== switcher.outR; - - aux[0] <== proofHash.out * st_top; - aux[1] <== old1leaf*st_iold; - - root <== aux[0] + aux[1] + new1leaf*st_inew; -} diff --git a/node_modules/circomlib/circuits/smt/smtverifiersm.circom b/node_modules/circomlib/circuits/smt/smtverifiersm.circom deleted file mode 100644 index 63d2c41..0000000 --- a/node_modules/circomlib/circuits/smt/smtverifiersm.circom +++ /dev/null @@ -1,106 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* -Each level in the SMTVerifier has a state. - -This is the state machine. - -The signals are - -levIns: 1 if we are in the level where the insertion should happen -xor: 1 if the bitKey of the old and new keys are different in this level -is0: Input that indicates that the oldKey is 0 -fnc: 0 -> VERIFY INCLUSION - 1 -> VERIFY NOT INCLUSION - -err state is not a state itself. It's a lack of state. - -The end of the last level will have to be `na` - - levIns=0 any - ┌────┐ ┌────┐ - │ │ │ │ - │ ▼ levIns=1 ▼ │ - │ ########### is0=1 ########### ########### │ - │ # # fnc=1 # # any # # │ - └──# top # ─────────────────────▶# i0 #───────────────▶# na #──┘ - ## ## ──────────┐ ## ## ┌───────▶## ## - ########─────────────┐│ ######### │┌────────▶######### - ││ levIns=1 ││ - ││ is0=0 ########### ││ - ││ fnc=1 # # any│ - │└──────────▶ # iold #────────┘│ - │ ## ## │ - │ ######### │ - │ │ - │ levIns=1 ########### │ - │ fnc=0 # # any - └────────────▶# inew #─────────┘ - ## ## - ######### - - */ - pragma circom 2.0.0; - - -template SMTVerifierSM() { - signal input is0; - signal input levIns; - signal input fnc; - - signal input prev_top; - signal input prev_i0; - signal input prev_iold; - signal input prev_inew; - signal input prev_na; - - signal output st_top; - signal output st_i0; - signal output st_iold; - signal output st_inew; - signal output st_na; - - signal prev_top_lev_ins; - signal prev_top_lev_ins_fnc; - - prev_top_lev_ins <== prev_top * levIns; - prev_top_lev_ins_fnc <== prev_top_lev_ins*fnc; // prev_top * levIns * fnc - - // st_top = prev_top * (1-levIns) - // = + prev_top - // - prev_top * levIns - st_top <== prev_top - prev_top_lev_ins; - - // st_inew = prev_top * levIns * (1-fnc) - // = + prev_top * levIns - // - prev_top * levIns * fnc - st_inew <== prev_top_lev_ins - prev_top_lev_ins_fnc; - - // st_iold = prev_top * levIns * (1-is0)*fnc - // = + prev_top * levIns * fnc - // - prev_top * levIns * fnc * is0 - st_iold <== prev_top_lev_ins_fnc * (1 - is0); - - // st_i0 = prev_top * levIns * is0 - // = + prev_top * levIns * is0 - st_i0 <== prev_top_lev_ins * is0; - - st_na <== prev_na + prev_inew + prev_iold + prev_i0; -} diff --git a/node_modules/circomlib/circuits/switcher.circom b/node_modules/circomlib/circuits/switcher.circom deleted file mode 100644 index e2e19a6..0000000 --- a/node_modules/circomlib/circuits/switcher.circom +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright 2018 0KIMS association. - - This file is part of circom (Zero Knowledge Circuit Compiler). - - circom is a free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - circom is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with circom. If not, see . -*/ - -/* - Assume sel is binary. - - If sel == 0 then outL = L and outR=R - If sel == 1 then outL = R and outR=L - - */ - -pragma circom 2.0.0; - -template Switcher() { - signal input sel; - signal input L; - signal input R; - signal output outL; - signal output outR; - - signal aux; - - aux <== (R-L)*sel; // We create aux in order to have only one multiplication - outL <== aux + L; - outR <== -aux + R; -} diff --git a/node_modules/circomlib/doc/root_transfer.monopic b/node_modules/circomlib/doc/root_transfer.monopic deleted file mode 100644 index 032c0ba..0000000 Binary files a/node_modules/circomlib/doc/root_transfer.monopic and /dev/null differ diff --git a/node_modules/circomlib/doc/smt_diagram_0.monopic b/node_modules/circomlib/doc/smt_diagram_0.monopic deleted file mode 100644 index c8e5b9b..0000000 Binary files a/node_modules/circomlib/doc/smt_diagram_0.monopic and /dev/null differ diff --git a/node_modules/circomlib/doc/smt_diagram_1.monopic b/node_modules/circomlib/doc/smt_diagram_1.monopic deleted file mode 100644 index 2f645f2..0000000 Binary files a/node_modules/circomlib/doc/smt_diagram_1.monopic and /dev/null differ diff --git a/node_modules/circomlib/doc/smt_hash.monopic b/node_modules/circomlib/doc/smt_hash.monopic deleted file mode 100644 index afb506a..0000000 Binary files a/node_modules/circomlib/doc/smt_hash.monopic and /dev/null differ diff --git a/node_modules/circomlib/doc/smt_levins.monopic b/node_modules/circomlib/doc/smt_levins.monopic deleted file mode 100644 index 2c306a8..0000000 Binary files a/node_modules/circomlib/doc/smt_levins.monopic and /dev/null differ diff --git a/node_modules/circomlib/doc/smt_sm.monopic b/node_modules/circomlib/doc/smt_sm.monopic deleted file mode 100644 index f3ee288..0000000 Binary files a/node_modules/circomlib/doc/smt_sm.monopic and /dev/null differ diff --git a/node_modules/circomlib/doc/smt_verifier_sm.monopic b/node_modules/circomlib/doc/smt_verifier_sm.monopic deleted file mode 100644 index 60551cb..0000000 Binary files a/node_modules/circomlib/doc/smt_verifier_sm.monopic and /dev/null differ diff --git a/node_modules/circomlib/doc/voting.monopic b/node_modules/circomlib/doc/voting.monopic deleted file mode 100644 index 0e1710d..0000000 Binary files a/node_modules/circomlib/doc/voting.monopic and /dev/null differ diff --git a/node_modules/circomlib/doc/window.monopic b/node_modules/circomlib/doc/window.monopic deleted file mode 100644 index 309dfb1..0000000 Binary files a/node_modules/circomlib/doc/window.monopic and /dev/null differ diff --git a/node_modules/circomlib/doc/window_chain.monopic b/node_modules/circomlib/doc/window_chain.monopic deleted file mode 100644 index 47c18bd..0000000 Binary files a/node_modules/circomlib/doc/window_chain.monopic and /dev/null differ diff --git a/node_modules/circomlib/index.js b/node_modules/circomlib/index.js deleted file mode 100644 index 139597f..0000000 --- a/node_modules/circomlib/index.js +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/node_modules/circomlib/package.json b/node_modules/circomlib/package.json deleted file mode 100644 index 4bda978..0000000 --- a/node_modules/circomlib/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "circomlib", - "version": "2.0.5", - "description": "Basic circuits library for Circom", - "main": "index.js", - "directories": { - "test": "test" - }, - "scripts": { - "test": "mocha --max-old-space-size=4000" - }, - "keywords": [ - "pedersen", - "hash", - "ethereum", - "circuit", - "circom", - "zksnark" - ], - "repository": { - "type": "git", - "url": "https://github.com/iden3/circomlib.git" - }, - "author": "0Kims", - "license": "GPL-3.0", - "devDependencies": { - "blake-hash": "^2.0.0", - "chai": "^4.3.4", - "circom_tester": "0.0.13", - "circomlibjs": "^0.1.4", - "mocha": "^9.1.3" - } -} diff --git a/node_modules/circomlib/test/aliascheck.js b/node_modules/circomlib/test/aliascheck.js deleted file mode 100644 index 1568026..0000000 --- a/node_modules/circomlib/test/aliascheck.js +++ /dev/null @@ -1,77 +0,0 @@ -const chai = require("chai"); -const path = require("path"); - -const assert = chai.assert; - -const Scalar = require("ffjavascript").Scalar; -const F1Field = require("ffjavascript").F1Field; -const utils = require("ffjavascript").utils; -const q = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); -const F = new F1Field(q); - -const wasm_tester = require("circom_tester").wasm; - -function print(circuit, w, s) { - console.log(s + ": " + w[circuit.getSignalIdx(s)]); -} - -function getBits(v, n) { - const res = []; - for (let i=0; i { - - cir = await wasm_tester(path.join(__dirname, "circuits", "aliascheck_test.circom")); - }); - - it("Satisfy the aliastest 0", async () => { - const inp = getBits(0, 254); - await cir.calculateWitness({in: inp}, true); - }); - - it("Satisfy the aliastest 3", async () => { - const inp = getBits(3, 254); - await cir.calculateWitness({in: inp}, true); - }); - - it("Satisfy the aliastest q-1", async () => { - const inp = getBits(F.e(-1), 254); - // console.log(JSON.stringify(utils.stringifyBigInts(inp))); - await cir.calculateWitness({in: inp}, true); - }); - - it("Should not satisfy an input of q", async () => { - const inp = getBits(q, 254); - try { - await cir.calculateWitness({in: inp}, true); - assert(false); - } catch(err) { - assert(err.message.includes("Assert Failed")); - } - }); - - it("Should not satisfy all ones", async () => { - - const inp = getBits(Scalar.sub(Scalar.shl(1, 254) , 1) , 254); - try { - await cir.calculateWitness({in: inp}, true); - assert(false); - } catch(err) { - assert(err.message.includes("Assert Failed")); - } - }); - -}); diff --git a/node_modules/circomlib/test/babyjub.js b/node_modules/circomlib/test/babyjub.js deleted file mode 100644 index 3f3e3bb..0000000 --- a/node_modules/circomlib/test/babyjub.js +++ /dev/null @@ -1,118 +0,0 @@ -const chai = require("chai"); -const path = require("path"); - -const createBlakeHash = require("blake-hash"); -const buildEddsa = require("circomlibjs").buildEddsa; - -const assert = chai.assert; - -const wasm_tester = require("circom_tester").wasm; -const utils = require("ffjavascript").utils; -const Scalar = require("ffjavascript").Scalar; - -describe("Baby Jub test", function () { - let eddsa; - let F; - let circuitAdd; - let circuitTest; - let circuitPbk; - - this.timeout(100000); - - before( async() => { - - eddsa = await buildEddsa(); - F = eddsa.F; - - circuitAdd = await wasm_tester(path.join(__dirname, "circuits", "babyadd_tester.circom")); - - circuitTest = await wasm_tester(path.join(__dirname, "circuits", "babycheck_test.circom")); - - circuitPbk = await wasm_tester(path.join(__dirname, "circuits", "babypbk_test.circom")); - }); - - it("Should add point (0,1) and (0,1)", async () => { - - const input={ - x1: 0, - y1: 1, - x2: 0, - y2: 1 - }; - - const w = await circuitAdd.calculateWitness(input, true); - - await circuitAdd.assertOut(w, {xout: 0, yout: 1}); - }); - - it("Should add 2 same numbers", async () => { - - const input={ - x1: 17777552123799933955779906779655732241715742912184938656739573121738514868268n, - y1: 2626589144620713026669568689430873010625803728049924121243784502389097019475n, - x2: 17777552123799933955779906779655732241715742912184938656739573121738514868268n, - y2: 2626589144620713026669568689430873010625803728049924121243784502389097019475n - }; - - const w = await circuitAdd.calculateWitness(input, true); - - await circuitAdd.assertOut(w, { - xout: 6890855772600357754907169075114257697580319025794532037257385534741338397365n, - yout: 4338620300185947561074059802482547481416142213883829469920100239455078257889n - }); - - }); - - it("Should add 2 different numbers", async () => { - - const input={ - x1: 17777552123799933955779906779655732241715742912184938656739573121738514868268n, - y1: 2626589144620713026669568689430873010625803728049924121243784502389097019475n, - x2: 16540640123574156134436876038791482806971768689494387082833631921987005038935n, - y2: 20819045374670962167435360035096875258406992893633759881276124905556507972311n - }; - - const w = await circuitAdd.calculateWitness(input, true); - - await circuitAdd.assertOut(w, { - xout: 7916061937171219682591368294088513039687205273691143098332585753343424131937n, - yout: 14035240266687799601661095864649209771790948434046947201833777492504781204499n - }); - - }); - - it("Should check (0,1) is a valid point", async() => { - const w = await circuitTest.calculateWitness({x: 0, y:1}, true); - - await circuitTest.checkConstraints(w); - }); - - it("Should check (1,0) is an invalid point", async() => { - try { - await circuitTest.calculateWitness({x: 1, y: 0}, true); - assert(false, "Should be a valid point"); - } catch(err) { - assert(err.message.includes("Assert Failed")); - } - }); - - it("Should extract the public key from the private one", async () => { - - const rawpvk = Buffer.from("0001020304050607080900010203040506070809000102030405060708090021", "hex"); - const pvk = eddsa.pruneBuffer(createBlakeHash("blake512").update(rawpvk).digest().slice(0,32)); - const S = Scalar.shr(utils.leBuff2int(pvk), 3); - - const A = eddsa.prv2pub(rawpvk); - - const input = { - in : S - }; - - const w = await circuitPbk.calculateWitness(input, true); - - await circuitPbk.assertOut(w, {Ax : F.toObject(A[0]), Ay: F.toObject(A[1])}); - - await circuitPbk.checkConstraints(w); - }); - -}); diff --git a/node_modules/circomlib/test/binsub.js b/node_modules/circomlib/test/binsub.js deleted file mode 100644 index 12809c9..0000000 --- a/node_modules/circomlib/test/binsub.js +++ /dev/null @@ -1,52 +0,0 @@ -const path = require("path"); - -const Scalar = require("ffjavascript").Scalar; -const wasm_tester = require("circom_tester").wasm; - -function print(circuit, w, s) { - console.log(s + ": " + w[circuit.getSignalIdx(s)]); -} - -async function checkSub(_a,_b, circuit) { - let a=Scalar.e(_a); - let b=Scalar.e(_b); - if (Scalar.lt(a, 0)) a = Scalar.add(a, Scalar.shl(1, 16)); - if (Scalar.lt(b, 0)) b = Scalar.add(b, Scalar.shl(1, 16)); - const w = await circuit.calculateWitness({a: a, b: b}, true); - - let res = Scalar.sub(a, b); - if (Scalar.lt(res, 0)) res = Scalar.add(res, Scalar.shl(1, 16)); - - await circuit.assertOut(w, {out: res}); -} - -describe("BinSub test", function () { - - this.timeout(100000); - - let circuit; - before( async() => { - circuit = await wasm_tester(path.join(__dirname, "circuits", "binsub_test.circom")); - }); - - it("Should check variuos ege cases", async () => { - await checkSub(0,0, circuit); - await checkSub(1,0, circuit); - await checkSub(-1,0, circuit); - await checkSub(2,1, circuit); - await checkSub(2,2, circuit); - await checkSub(2,3, circuit); - await checkSub(2,-1, circuit); - await checkSub(2,-2, circuit); - await checkSub(2,-3, circuit); - await checkSub(-2,-3, circuit); - await checkSub(-2,-2, circuit); - await checkSub(-2,-1, circuit); - await checkSub(-2,0, circuit); - await checkSub(-2,1, circuit); - await checkSub(-2,2, circuit); - await checkSub(-2,3, circuit); - }); - - -}); diff --git a/node_modules/circomlib/test/binsum.js b/node_modules/circomlib/test/binsum.js deleted file mode 100644 index bd42bf1..0000000 --- a/node_modules/circomlib/test/binsum.js +++ /dev/null @@ -1,38 +0,0 @@ -const chai = require("chai"); -const path = require("path"); - -const wasm_tester = require("circom_tester").wasm; - -const F1Field = require("ffjavascript").F1Field; -const Scalar = require("ffjavascript").Scalar; -exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); -const Fr = new F1Field(exports.p); - -const assert = chai.assert; - -describe("Binary sum test", function () { - this.timeout(100000000); - - it("Should create a constant circuit", async () => { - const circuit = await wasm_tester(path.join(__dirname, "circuits", "constants_test.circom")); - await circuit.loadConstraints(); - assert.equal(circuit.nVars, 2); - assert.equal(circuit.constraints.length, 1); - - const witness = await circuit.calculateWitness({ "in": Fr.toString(Fr.e("0xd807aa98"))}, true); - - assert(Fr.eq(Fr.e(witness[0]),Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]),Fr.e("0xd807aa98"))); - }); - it("Should create a sum circuit", async () => { - const circuit = await wasm_tester(path.join(__dirname, "circuits", "sum_test.circom")); - await circuit.loadConstraints(); - - assert.equal(circuit.constraints.length, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) - - const witness = await circuit.calculateWitness({ "a": "111", "b": "222" }, true); - - assert(Fr.eq(Fr.e(witness[0]),Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]),Fr.e("333"))); - }); -}); diff --git a/node_modules/circomlib/test/circuits/aliascheck_test.circom b/node_modules/circomlib/test/circuits/aliascheck_test.circom deleted file mode 100644 index 942b77c..0000000 --- a/node_modules/circomlib/test/circuits/aliascheck_test.circom +++ /dev/null @@ -1,4 +0,0 @@ -pragma circom 2.0.0; -include "../../circuits/aliascheck.circom"; - -component main = AliasCheck(); diff --git a/node_modules/circomlib/test/circuits/babyadd_tester.circom b/node_modules/circomlib/test/circuits/babyadd_tester.circom deleted file mode 100644 index 18c9d8c..0000000 --- a/node_modules/circomlib/test/circuits/babyadd_tester.circom +++ /dev/null @@ -1,4 +0,0 @@ -pragma circom 2.0.0; -include "../../circuits/babyjub.circom"; - -component main = BabyAdd(); diff --git a/node_modules/circomlib/test/circuits/babycheck_test.circom b/node_modules/circomlib/test/circuits/babycheck_test.circom deleted file mode 100644 index bdcdc69..0000000 --- a/node_modules/circomlib/test/circuits/babycheck_test.circom +++ /dev/null @@ -1,4 +0,0 @@ -pragma circom 2.0.0; -include "../../circuits/babyjub.circom"; - -component main = BabyCheck(); diff --git a/node_modules/circomlib/test/circuits/babypbk_test.circom b/node_modules/circomlib/test/circuits/babypbk_test.circom deleted file mode 100644 index 5e1f8a5..0000000 --- a/node_modules/circomlib/test/circuits/babypbk_test.circom +++ /dev/null @@ -1,4 +0,0 @@ -pragma circom 2.0.0; -include "../../circuits/babyjub.circom"; - -component main = BabyPbk(); diff --git a/node_modules/circomlib/test/circuits/binsub_test.circom b/node_modules/circomlib/test/circuits/binsub_test.circom deleted file mode 100644 index 33cd1a4..0000000 --- a/node_modules/circomlib/test/circuits/binsub_test.circom +++ /dev/null @@ -1,33 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/bitify.circom"; -include "../../circuits/binsub.circom"; - -template A() { - signal input a; //private - signal input b; - signal output out; - - var i; - - component n2ba = Num2Bits(16); - component n2bb = Num2Bits(16); - component sub = BinSub(16); - component b2n = Bits2Num(16); - - n2ba.in <== a; - n2bb.in <== b; - - for (i=0; i<16; i++) { - sub.in[0][i] <== n2ba.out[i]; - sub.in[1][i] <== n2bb.out[i]; - } - - for (i=0; i<16; i++) { - b2n.in[i] <== sub.out[i]; - } - - out <== b2n.out; -} - -component main = A(); diff --git a/node_modules/circomlib/test/circuits/constants_test.circom b/node_modules/circomlib/test/circuits/constants_test.circom deleted file mode 100644 index 1acb271..0000000 --- a/node_modules/circomlib/test/circuits/constants_test.circom +++ /dev/null @@ -1,20 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/sha256/constants.circom"; - -template A() { - signal input in; - component h0; - h0 = K(8); - - var lc = 0; - var e = 1; - for (var i=0; i<32; i++) { - lc = lc + e*h0.out[i]; - e *= 2; - } - - lc === in; -} - -component main {public [in]} = A(); diff --git a/node_modules/circomlib/test/circuits/eddsa_test.circom b/node_modules/circomlib/test/circuits/eddsa_test.circom deleted file mode 100644 index b04ef9b..0000000 --- a/node_modules/circomlib/test/circuits/eddsa_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/eddsa.circom"; - -component main = EdDSAVerifier(80); diff --git a/node_modules/circomlib/test/circuits/eddsamimc_test.circom b/node_modules/circomlib/test/circuits/eddsamimc_test.circom deleted file mode 100644 index ca1a979..0000000 --- a/node_modules/circomlib/test/circuits/eddsamimc_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/eddsamimc.circom"; - -component main = EdDSAMiMCVerifier(); diff --git a/node_modules/circomlib/test/circuits/eddsaposeidon_test.circom b/node_modules/circomlib/test/circuits/eddsaposeidon_test.circom deleted file mode 100644 index 22ee599..0000000 --- a/node_modules/circomlib/test/circuits/eddsaposeidon_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/eddsaposeidon.circom"; - -component main = EdDSAPoseidonVerifier(); diff --git a/node_modules/circomlib/test/circuits/edwards2montgomery.circom b/node_modules/circomlib/test/circuits/edwards2montgomery.circom deleted file mode 100644 index 7fce4d7..0000000 --- a/node_modules/circomlib/test/circuits/edwards2montgomery.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/montgomery.circom"; - -component main = Edwards2Montgomery(); diff --git a/node_modules/circomlib/test/circuits/escalarmul_min_test.circom b/node_modules/circomlib/test/circuits/escalarmul_min_test.circom deleted file mode 100644 index 50ce99e..0000000 --- a/node_modules/circomlib/test/circuits/escalarmul_min_test.circom +++ /dev/null @@ -1,27 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/escalarmul.circom"; - - -template Main() { - signal input in[256]; - signal output out[2]; - - var i; - - var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203]; - - component escalarMul = EscalarMul(256, base); - - escalarMul.inp[0] <== 0; - escalarMul.inp[1] <== 1; - - for (i=0; i<256; i++) { - in[i] ==> escalarMul.in[i]; - } - - escalarMul.out[0] ==> out[0]; - escalarMul.out[1] ==> out[1]; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/escalarmul_test.circom b/node_modules/circomlib/test/circuits/escalarmul_test.circom deleted file mode 100644 index 1988633..0000000 --- a/node_modules/circomlib/test/circuits/escalarmul_test.circom +++ /dev/null @@ -1,33 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/escalarmul.circom"; -include "../../circuits/bitify.circom"; - - -template Main() { - signal input in; - signal output out[2]; - - var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203]; - - - component n2b = Num2Bits(253); - component escalarMul = EscalarMul(253, base); - - escalarMul.inp[0] <== 0; - escalarMul.inp[1] <== 1; - - var i; - - in ==> n2b.in; - - for (i=0; i<253; i++) { - n2b.out[i] ==> escalarMul.in[i]; - } - - escalarMul.out[0] ==> out[0]; - escalarMul.out[1] ==> out[1]; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/escalarmul_test_min.circom b/node_modules/circomlib/test/circuits/escalarmul_test_min.circom deleted file mode 100644 index 422e0a8..0000000 --- a/node_modules/circomlib/test/circuits/escalarmul_test_min.circom +++ /dev/null @@ -1,28 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/escalarmul.circom"; - - -template Main() { - signal input in[256]; - signal output out[2]; - - var i; - - var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203]; - - component escalarMul = EscalarMul(256, base); - - escalarMul.inp[0] <== 0; - escalarMul.inp[1] <== 1; - - for (i=0; i<256; i++) { - in[i] ==> escalarMul.in[i]; - } - - escalarMul.out[0] ==> out[0]; - escalarMul.out[1] ==> out[1]; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/escalarmulany_test.circom b/node_modules/circomlib/test/circuits/escalarmulany_test.circom deleted file mode 100644 index 5e79bbe..0000000 --- a/node_modules/circomlib/test/circuits/escalarmulany_test.circom +++ /dev/null @@ -1,30 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/escalarmulany.circom"; -include "../../circuits/bitify.circom"; - -template Main() { - signal input e; - signal input p[2]; - signal output out[2]; - - component n2b = Num2Bits(253); - component escalarMulAny = EscalarMulAny(253); - - escalarMulAny.p[0] <== p[0]; - escalarMulAny.p[1] <== p[1]; - - var i; - - e ==> n2b.in; - - for (i=0; i<253; i++) { - n2b.out[i] ==> escalarMulAny.e[i]; - } - - escalarMulAny.out[0] ==> out[0]; - escalarMulAny.out[1] ==> out[1]; -} - -component main = Main(); - diff --git a/node_modules/circomlib/test/circuits/escalarmulfix_test.circom b/node_modules/circomlib/test/circuits/escalarmulfix_test.circom deleted file mode 100644 index 54cd7ba..0000000 --- a/node_modules/circomlib/test/circuits/escalarmulfix_test.circom +++ /dev/null @@ -1,31 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/escalarmulfix.circom"; -include "../../circuits/bitify.circom"; - - -template Main() { - signal input e; - signal output out[2]; - - var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203]; - - - component n2b = Num2Bits(253); - component escalarMul = EscalarMulFix(253, base); - - var i; - - e ==> n2b.in; - - for (i=0; i<253; i++) { - n2b.out[i] ==> escalarMul.e[i]; - } - - escalarMul.out[0] ==> out[0]; - escalarMul.out[1] ==> out[1]; -} - -component main = Main(); - diff --git a/node_modules/circomlib/test/circuits/escalarmulw4table.circom b/node_modules/circomlib/test/circuits/escalarmulw4table.circom deleted file mode 100644 index 74b4334..0000000 --- a/node_modules/circomlib/test/circuits/escalarmulw4table.circom +++ /dev/null @@ -1,20 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/escalarmulw4table.circom"; - - - - -template Main() { - signal output out[16][2]; - var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203]; - - var escalarMul[16][2] = EscalarMulW4Table(base, 0); - for (var i=0; i<16; i++) { - out[i][0] <== escalarMul[i][0]; - out[i][1] <== escalarMul[i][1]; - } -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/escalarmulw4table_test.circom b/node_modules/circomlib/test/circuits/escalarmulw4table_test.circom deleted file mode 100644 index ed2ac41..0000000 --- a/node_modules/circomlib/test/circuits/escalarmulw4table_test.circom +++ /dev/null @@ -1,19 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/escalarmulw4table.circom"; - - -template Main() { - signal input in; - signal output out[16][2]; - var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203]; - - var escalarMul[16][2] = EscalarMulW4Table(base, 0); - for (var i=0; i<16; i++) { - out[i][0] <== escalarMul[i][0]*in; - out[i][1] <== escalarMul[i][1]*in; - } -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/escalarmulw4table_test3.circom b/node_modules/circomlib/test/circuits/escalarmulw4table_test3.circom deleted file mode 100644 index 14c0ee8..0000000 --- a/node_modules/circomlib/test/circuits/escalarmulw4table_test3.circom +++ /dev/null @@ -1,19 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/escalarmulw4table.circom"; - - -template Main() { - signal input in; - signal output out[16][2]; - var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203]; - - var escalarMul[16][2] = EscalarMulW4Table(base, 3); - for (var i=0; i<16; i++) { - out[i][0] <== escalarMul[i][0]*in; - out[i][1] <== escalarMul[i][1]*in; - } -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/greatereqthan.circom b/node_modules/circomlib/test/circuits/greatereqthan.circom deleted file mode 100644 index 8e53f94..0000000 --- a/node_modules/circomlib/test/circuits/greatereqthan.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/comparators.circom"; - -component main = GreaterEqThan(32); diff --git a/node_modules/circomlib/test/circuits/greaterthan.circom b/node_modules/circomlib/test/circuits/greaterthan.circom deleted file mode 100644 index d214237..0000000 --- a/node_modules/circomlib/test/circuits/greaterthan.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/comparators.circom"; - -component main = GreaterThan(32); diff --git a/node_modules/circomlib/test/circuits/isequal.circom b/node_modules/circomlib/test/circuits/isequal.circom deleted file mode 100644 index eb4fcc4..0000000 --- a/node_modules/circomlib/test/circuits/isequal.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/comparators.circom"; - -component main = IsEqual(); diff --git a/node_modules/circomlib/test/circuits/iszero.circom b/node_modules/circomlib/test/circuits/iszero.circom deleted file mode 100644 index 0ce848a..0000000 --- a/node_modules/circomlib/test/circuits/iszero.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/comparators.circom"; - -component main = IsZero(); diff --git a/node_modules/circomlib/test/circuits/lesseqthan.circom b/node_modules/circomlib/test/circuits/lesseqthan.circom deleted file mode 100644 index 9b9a89b..0000000 --- a/node_modules/circomlib/test/circuits/lesseqthan.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/comparators.circom"; - -component main = LessEqThan(32); diff --git a/node_modules/circomlib/test/circuits/lessthan.circom b/node_modules/circomlib/test/circuits/lessthan.circom deleted file mode 100644 index 78660b7..0000000 --- a/node_modules/circomlib/test/circuits/lessthan.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/comparators.circom"; - -component main = LessThan(32); diff --git a/node_modules/circomlib/test/circuits/mimc_sponge_hash_test.circom b/node_modules/circomlib/test/circuits/mimc_sponge_hash_test.circom deleted file mode 100644 index 68a8ab5..0000000 --- a/node_modules/circomlib/test/circuits/mimc_sponge_hash_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/mimcsponge.circom"; - -component main = MiMCSponge(2, 220, 3); diff --git a/node_modules/circomlib/test/circuits/mimc_sponge_test.circom b/node_modules/circomlib/test/circuits/mimc_sponge_test.circom deleted file mode 100644 index 367c615..0000000 --- a/node_modules/circomlib/test/circuits/mimc_sponge_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/mimcsponge.circom"; - -component main = MiMCFeistel(220); diff --git a/node_modules/circomlib/test/circuits/mimc_test.circom b/node_modules/circomlib/test/circuits/mimc_test.circom deleted file mode 100644 index 2325e65..0000000 --- a/node_modules/circomlib/test/circuits/mimc_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/mimc.circom"; - -component main = MiMC7(91); diff --git a/node_modules/circomlib/test/circuits/montgomery2edwards.circom b/node_modules/circomlib/test/circuits/montgomery2edwards.circom deleted file mode 100644 index af344a4..0000000 --- a/node_modules/circomlib/test/circuits/montgomery2edwards.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/montgomery.circom"; - -component main = Montgomery2Edwards(); diff --git a/node_modules/circomlib/test/circuits/montgomeryadd.circom b/node_modules/circomlib/test/circuits/montgomeryadd.circom deleted file mode 100644 index 8d0e73b..0000000 --- a/node_modules/circomlib/test/circuits/montgomeryadd.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/montgomery.circom"; - -component main = MontgomeryAdd(); diff --git a/node_modules/circomlib/test/circuits/montgomerydouble.circom b/node_modules/circomlib/test/circuits/montgomerydouble.circom deleted file mode 100644 index 51909db..0000000 --- a/node_modules/circomlib/test/circuits/montgomerydouble.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/montgomery.circom"; - -component main = MontgomeryDouble(); diff --git a/node_modules/circomlib/test/circuits/mux1_1.circom b/node_modules/circomlib/test/circuits/mux1_1.circom deleted file mode 100644 index ff13ae2..0000000 --- a/node_modules/circomlib/test/circuits/mux1_1.circom +++ /dev/null @@ -1,33 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/mux1.circom"; -include "../../circuits/bitify.circom"; - - -template Constants() { - var i; - signal output out[2]; - - out[0] <== 37; - out[1] <== 47; -} - -template Main() { - var i; - signal input selector;//private - signal output out; - - component mux = Mux1(); - component n2b = Num2Bits(1); - component cst = Constants(); - - selector ==> n2b.in; - n2b.out[0] ==> mux.s; - for (i=0; i<2; i++) { - cst.out[i] ==> mux.c[i]; - } - - mux.out ==> out; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/mux2_1.circom b/node_modules/circomlib/test/circuits/mux2_1.circom deleted file mode 100644 index 419fe62..0000000 --- a/node_modules/circomlib/test/circuits/mux2_1.circom +++ /dev/null @@ -1,37 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/mux2.circom"; -include "../../circuits/bitify.circom"; - - -template Constants() { - var i; - signal output out[4]; - - out[0] <== 37; - out[1] <== 47; - out[2] <== 53; - out[3] <== 71; -} - -template Main() { - var i; - signal input selector;//private - signal output out; - - component mux = Mux2(); - component n2b = Num2Bits(2); - component cst = Constants(); - - selector ==> n2b.in; - for (i=0; i<2; i++) { - n2b.out[i] ==> mux.s[i]; - } - for (i=0; i<4; i++) { - cst.out[i] ==> mux.c[i]; - } - - mux.out ==> out; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/mux3_1.circom b/node_modules/circomlib/test/circuits/mux3_1.circom deleted file mode 100644 index 8723c8b..0000000 --- a/node_modules/circomlib/test/circuits/mux3_1.circom +++ /dev/null @@ -1,41 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/mux3.circom"; -include "../../circuits/bitify.circom"; - - -template Constants() { - var i; - signal output out[8]; - - out[0] <== 37; - out[1] <== 47; - out[2] <== 53; - out[3] <== 71; - out[4] <== 89; - out[5] <== 107; - out[6] <== 163; - out[7] <== 191; -} - -template Main() { - var i; - signal input selector;//private - signal output out; - - component mux = Mux3(); - component n2b = Num2Bits(3); - component cst = Constants(); - - selector ==> n2b.in; - for (i=0; i<3; i++) { - n2b.out[i] ==> mux.s[i]; - } - for (i=0; i<8; i++) { - cst.out[i] ==> mux.c[i]; - } - - mux.out ==> out; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/mux4_1.circom b/node_modules/circomlib/test/circuits/mux4_1.circom deleted file mode 100644 index c9b10dd..0000000 --- a/node_modules/circomlib/test/circuits/mux4_1.circom +++ /dev/null @@ -1,56 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/mux4.circom"; -include "../../circuits/bitify.circom"; - - -template Constants() { - var i; - signal output out[16]; - - out[0] <== 123; - out[1] <== 456; - out[2] <== 789; - out[3] <== 012; - out[4] <== 111; - out[5] <== 222; - out[6] <== 333; - out[7] <== 4546; - out[8] <== 134523; - out[9] <== 44356; - out[10] <== 15623; - out[11] <== 4566; - out[12] <== 1223; - out[13] <== 4546; - out[14] <== 4256; - out[15] <== 4456; - -/* - for (i=0;i<16; i++) { - out[i] <== i*2+100; - } -*/ - -} - -template Main() { - var i; - signal input selector;//private - signal output out; - - component mux = Mux4(); - component n2b = Num2Bits(4); - component cst = Constants(); - - selector ==> n2b.in; - for (i=0; i<4; i++) { - n2b.out[i] ==> mux.s[i]; - } - for (i=0; i<16; i++) { - cst.out[i] ==> mux.c[i]; - } - - mux.out ==> out; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/pedersen2_test.circom b/node_modules/circomlib/test/circuits/pedersen2_test.circom deleted file mode 100644 index c407d53..0000000 --- a/node_modules/circomlib/test/circuits/pedersen2_test.circom +++ /dev/null @@ -1,34 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/pedersen.circom"; -include "../../circuits/bitify.circom"; - - -template Main() { - signal input in; - signal output out[2]; - - component pedersen = Pedersen(256); - - component n2b; - n2b = Num2Bits(253); - - var i; - - in ==> n2b.in; - - for (i=0; i<253; i++) { - pedersen.in[i] <== n2b.out[i]; - } - - for (i=253; i<256; i++) { - pedersen.in[i] <== 0; - } - - pedersen.out[0] ==> out[0]; - pedersen.out[1] ==> out[1]; -} - -component main = Main(); - - diff --git a/node_modules/circomlib/test/circuits/pedersen_test.circom b/node_modules/circomlib/test/circuits/pedersen_test.circom deleted file mode 100644 index eba561c..0000000 --- a/node_modules/circomlib/test/circuits/pedersen_test.circom +++ /dev/null @@ -1,31 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/pedersen_old.circom"; -include "../../circuits/bitify.circom"; - - -template Main() { - signal input in[2]; - signal output out[2]; - - component pedersen = Pedersen(250*2); - - component n2b[2]; - n2b[0] = Num2Bits(250); - n2b[1] = Num2Bits(250); - - var i; - - in[0] ==> n2b[0].in; - in[1] ==> n2b[1].in; - - for (i=0; i<250; i++) { - n2b[0].out[i] ==> pedersen.in[i]; - n2b[1].out[i] ==> pedersen.in[250+i]; - } - - pedersen.out[0] ==> out[0]; - pedersen.out[1] ==> out[1]; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/pointbits_loopback.circom b/node_modules/circomlib/test/circuits/pointbits_loopback.circom deleted file mode 100644 index cbba8fc..0000000 --- a/node_modules/circomlib/test/circuits/pointbits_loopback.circom +++ /dev/null @@ -1,25 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/pointbits.circom"; - - -template Main() { - signal input in[2]; - - var i; - - component p2b = Point2Bits_Strict(); - component b2p = Bits2Point_Strict(); - - p2b.in[0] <== in[0]; - p2b.in[1] <== in[1]; - - for (i=0; i<256; i++) { - b2p.in[i] <== p2b.out[i]; - } - - b2p.out[0] === in[0]; - b2p.out[1] === in[1]; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/poseidon3_test.circom b/node_modules/circomlib/test/circuits/poseidon3_test.circom deleted file mode 100644 index 1b06c18..0000000 --- a/node_modules/circomlib/test/circuits/poseidon3_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/poseidon.circom"; - -component main = Poseidon(2); diff --git a/node_modules/circomlib/test/circuits/poseidon6_test.circom b/node_modules/circomlib/test/circuits/poseidon6_test.circom deleted file mode 100644 index 83cd1cf..0000000 --- a/node_modules/circomlib/test/circuits/poseidon6_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/poseidon.circom"; - -component main = Poseidon(5); diff --git a/node_modules/circomlib/test/circuits/poseidonex_test.circom b/node_modules/circomlib/test/circuits/poseidonex_test.circom deleted file mode 100644 index 171fbd2..0000000 --- a/node_modules/circomlib/test/circuits/poseidonex_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/poseidon.circom"; - -component main = PoseidonEx(16, 17); \ No newline at end of file diff --git a/node_modules/circomlib/test/circuits/sha256_2_test.circom b/node_modules/circomlib/test/circuits/sha256_2_test.circom deleted file mode 100644 index 13a445d..0000000 --- a/node_modules/circomlib/test/circuits/sha256_2_test.circom +++ /dev/null @@ -1,17 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/sha256/sha256_2.circom"; - -template Main() { - signal input a; //private - signal input b; //private - signal output out; - - component sha256_2 = Sha256_2(); - - sha256_2.a <== a; - sha256_2.b <== b; - out <== sha256_2.out; -} - -component main = Main(); diff --git a/node_modules/circomlib/test/circuits/sha256_test448.circom b/node_modules/circomlib/test/circuits/sha256_test448.circom deleted file mode 100644 index 7a9843c..0000000 --- a/node_modules/circomlib/test/circuits/sha256_test448.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/sha256/sha256.circom"; - -component main = Sha256(448); diff --git a/node_modules/circomlib/test/circuits/sha256_test512.circom b/node_modules/circomlib/test/circuits/sha256_test512.circom deleted file mode 100644 index 06db0d3..0000000 --- a/node_modules/circomlib/test/circuits/sha256_test512.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/sha256/sha256.circom"; - -component main = Sha256(512); diff --git a/node_modules/circomlib/test/circuits/sign_test.circom b/node_modules/circomlib/test/circuits/sign_test.circom deleted file mode 100644 index 2dae52c..0000000 --- a/node_modules/circomlib/test/circuits/sign_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/sign.circom"; - -component main = Sign(); diff --git a/node_modules/circomlib/test/circuits/smtprocessor10_test.circom b/node_modules/circomlib/test/circuits/smtprocessor10_test.circom deleted file mode 100644 index 3030054..0000000 --- a/node_modules/circomlib/test/circuits/smtprocessor10_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/smt/smtprocessor.circom"; - -component main = SMTProcessor(10); diff --git a/node_modules/circomlib/test/circuits/smtverifier10_test.circom b/node_modules/circomlib/test/circuits/smtverifier10_test.circom deleted file mode 100644 index 5b6d47a..0000000 --- a/node_modules/circomlib/test/circuits/smtverifier10_test.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/smt/smtverifier.circom"; - -component main = SMTVerifier(10); diff --git a/node_modules/circomlib/test/circuits/sum_test.circom b/node_modules/circomlib/test/circuits/sum_test.circom deleted file mode 100644 index b0be22f..0000000 --- a/node_modules/circomlib/test/circuits/sum_test.circom +++ /dev/null @@ -1,33 +0,0 @@ -pragma circom 2.0.0; - -include "../../circuits/bitify.circom"; -include "../../circuits/binsum.circom"; - -template A() { - signal input a; //private - signal input b; - signal output out; - - var i; - - component n2ba = Num2Bits(32); - component n2bb = Num2Bits(32); - component sum = BinSum(32,2); - component b2n = Bits2Num(32); - - n2ba.in <== a; - n2bb.in <== b; - - for (i=0; i<32; i++) { - sum.in[0][i] <== n2ba.out[i]; - sum.in[1][i] <== n2bb.out[i]; - } - - for (i=0; i<32; i++) { - b2n.in[i] <== sum.out[i]; - } - - out <== b2n.out; -} - -component main = A(); diff --git a/node_modules/circomlib/test/comparators.js b/node_modules/circomlib/test/comparators.js deleted file mode 100644 index 157c5f8..0000000 --- a/node_modules/circomlib/test/comparators.js +++ /dev/null @@ -1,187 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const F1Field = require("ffjavascript").F1Field; -const Scalar = require("ffjavascript").Scalar; -exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); -const Fr = new F1Field(exports.p); - -const wasm_tester = require("circom_tester").wasm; - -const assert = chai.assert; - -describe("Comparators test", function () { - - this.timeout(100000); - - it("Should create a iszero circuit", async() => { - const circuit = await wasm_tester(path.join(__dirname, "circuits", "iszero.circom")); - - let witness; - witness = await circuit.calculateWitness({ "in": 111}, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": 0 }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - }); - it("Should create a isequal circuit", async() => { - const circuit = await wasm_tester(path.join(__dirname, "circuits", "isequal.circom")); - - let witness; - witness = await circuit.calculateWitness({ "in": [111,222] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - - witness = await circuit.calculateWitness({ "in": [444,444] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - }); - it("Should create a comparison lessthan", async() => { - const circuit = await wasm_tester(path.join(__dirname, "circuits", "lessthan.circom")); - - let witness; - witness = await circuit.calculateWitness({ "in": [333,444] }), true; - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in":[1,1] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [661, 660] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [0, 1] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [0, 444] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [1, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [555, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [0, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - }); - it("Should create a comparison lesseqthan", async() => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "lesseqthan.circom")); - - let witness; - witness = await circuit.calculateWitness({ "in": [333,444] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in":[1,1] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [661, 660] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [0, 1] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [0, 444] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [1, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [555, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [0, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - }); - it("Should create a comparison greaterthan", async() => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "greaterthan.circom")); - - let witness; - witness = await circuit.calculateWitness({ "in": [333,444] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in":[1,1] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [661, 660] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [0, 1] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [0, 444] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [1, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [555, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [0, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - }); - it("Should create a comparison greatereqthan", async() => { - const circuit = await wasm_tester(path.join(__dirname, "circuits", "greatereqthan.circom")); - - let witness; - witness = await circuit.calculateWitness({ "in": [333,444] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in":[1,1] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [661, 660] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [0, 1] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [0, 444] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); - - witness = await circuit.calculateWitness({ "in": [1, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [555, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - - witness = await circuit.calculateWitness({ "in": [0, 0] }, true); - assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); - assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); - }); -}); diff --git a/node_modules/circomlib/test/eddsa.js b/node_modules/circomlib/test/eddsa.js deleted file mode 100644 index 7d7e5d9..0000000 --- a/node_modules/circomlib/test/eddsa.js +++ /dev/null @@ -1,75 +0,0 @@ -const chai = require("chai"); -const path = require("path"); - -const wasm_tester = require("circom_tester").wasm; - -const buildEddsa = require("circomlibjs").buildEddsa; -const buildBabyjub = require("circomlibjs").buildBabyjub; - -const Scalar = require("ffjavascript").Scalar; - -const assert = chai.assert; - -function print(circuit, w, s) { - console.log(s + ": " + w[circuit.getSignalIdx(s)]); -} - -function buffer2bits(buff) { - const res = []; - for (let i=0; i>j)&1) { - res.push(1n); - } else { - res.push(0n); - } - } - } - return res; -} - - -describe("EdDSA test", function () { - let circuit; - let eddsa; - let babyJub; - let F; - - this.timeout(100000); - - before( async () => { - eddsa = await buildEddsa(); - babyJub = await buildBabyjub(); - F = babyJub.F; - circuit = await wasm_tester(path.join(__dirname, "circuits", "eddsa_test.circom")); - }); - - - it("Sign a single 10 bytes from 0 to 9", async () => { - const msg = Buffer.from("00010203040506070809", "hex"); - -// const prvKey = crypto.randomBytes(32); - - const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); - - const pubKey = eddsa.prv2pub(prvKey); - - const pPubKey = babyJub.packPoint(pubKey); - - const signature = eddsa.signPedersen(prvKey, msg); - - const pSignature = eddsa.packSignature(signature); - const uSignature = eddsa.unpackSignature(pSignature); - - assert(eddsa.verifyPedersen(msg, uSignature, pubKey)); - - const msgBits = buffer2bits( msg); - const r8Bits = buffer2bits( pSignature.slice(0, 32)); - const sBits = buffer2bits( pSignature.slice(32, 64)); - const aBits = buffer2bits( pPubKey); - - const w = await circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}, true); - - await circuit.checkConstraints(w); - }); -}); diff --git a/node_modules/circomlib/test/eddsamimc.js b/node_modules/circomlib/test/eddsamimc.js deleted file mode 100644 index 0cf5121..0000000 --- a/node_modules/circomlib/test/eddsamimc.js +++ /dev/null @@ -1,102 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; - -const buildEddsa = require("circomlibjs").buildEddsa; -const buildBabyjub = require("circomlibjs").buildBabyjub; - -const assert = chai.assert; - -describe("EdDSA MiMC test", function () { - let circuit; - let eddsa; - let babyJub; - let F; - - this.timeout(100000); - - before( async () => { - eddsa = await buildEddsa(); - babyJub = await buildBabyjub(); - F = babyJub.F; - - circuit = await wasm_tester(path.join(__dirname, "circuits", "eddsamimc_test.circom")); - }); - - it("Sign a single number", async () => { - const msg = F.e(1234); - - const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); - - const pubKey = eddsa.prv2pub(prvKey); - - const signature = eddsa.signMiMC(prvKey, msg); - - assert(eddsa.verifyMiMC(msg, signature, pubKey)); - - const w = await circuit.calculateWitness({ - enabled: 1, - Ax: F.toObject(pubKey[0]), - Ay: F.toObject(pubKey[1]), - R8x: F.toObject(signature.R8[0]), - R8y: F.toObject(signature.R8[1]), - S: signature.S, - M: F.toObject(msg)}, true); - - - await circuit.checkConstraints(w); - - }); - - it("Detect Invalid signature", async () => { - const msg = F.e(1234); - - const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); - - const pubKey = eddsa.prv2pub(prvKey); - - - const signature = eddsa.signMiMC(prvKey, msg); - - assert(eddsa.verifyMiMC(msg, signature, pubKey)); - try { - const w = await circuit.calculateWitness({ - enabled: 1, - Ax: F.toObject(pubKey[0]), - Ay: F.toObject(pubKey[1]), - R8x: F.toObject(F.add(signature.R8[0], F.e(1))), - R8y: F.toObject(signature.R8[1]), - S: signature.S, - M: F.toObject(msg)}, true); - assert(false); - } catch(err) { - assert(err.message.includes("Assert Failed")); - } - }); - - - it("Test a dissabled circuit with a bad signature", async () => { - const msg = F.e(1234); - - const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); - - const pubKey = eddsa.prv2pub(prvKey); - - - const signature = eddsa.signMiMC(prvKey, msg); - - assert(eddsa.verifyMiMC(msg, signature, pubKey)); - - const w = await circuit.calculateWitness({ - enabled: 0, - Ax: F.toObject(pubKey[0]), - Ay: F.toObject(pubKey[1]), - R8x: F.toObject(F.add(signature.R8[0], F.e(1))), - R8y: F.toObject(signature.R8[1]), - S: signature.S, - M: F.toObject(msg)}, true); - - await circuit.checkConstraints(w); - - }); -}); diff --git a/node_modules/circomlib/test/eddsaposeidon.js b/node_modules/circomlib/test/eddsaposeidon.js deleted file mode 100644 index 3dec2cd..0000000 --- a/node_modules/circomlib/test/eddsaposeidon.js +++ /dev/null @@ -1,103 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; - -const buildEddsa = require("circomlibjs").buildEddsa; -const buildBabyjub = require("circomlibjs").buildBabyjub; - -const assert = chai.assert; - -describe("EdDSA Poseidon test", function () { - let circuit; - let eddsa; - let babyJub; - let F; - - this.timeout(100000); - - before( async () => { - eddsa = await buildEddsa(); - babyJub = await buildBabyjub(); - F = babyJub.F; - circuit = await wasm_tester(path.join(__dirname, "circuits", "eddsaposeidon_test.circom")); - }); - - it("Sign a single number", async () => { - const msg = F.e(1234); - - const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); - - const pubKey = eddsa.prv2pub(prvKey); - - const signature = eddsa.signPoseidon(prvKey, msg); - - assert(eddsa.verifyPoseidon(msg, signature, pubKey)); - - const input = { - enabled: 1, - Ax: F.toObject(pubKey[0]), - Ay: F.toObject(pubKey[1]), - R8x: F.toObject(signature.R8[0]), - R8y: F.toObject(signature.R8[1]), - S: signature.S, - M: F.toObject(msg) - }; - - // console.log(JSON.stringify(utils.stringifyBigInts(input))); - - const w = await circuit.calculateWitness(input, true); - - await circuit.checkConstraints(w); - }); - - it("Detect Invalid signature", async () => { - const msg = F.e(1234); - - const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); - - const pubKey = eddsa.prv2pub(prvKey); - - - const signature = eddsa.signPoseidon(prvKey, msg); - - assert(eddsa.verifyPoseidon(msg, signature, pubKey)); - try { - await circuit.calculateWitness({ - enabled: 1, - Ax: F.toObject(pubKey[0]), - Ay: F.toObject(pubKey[1]), - R8x: F.toObject(F.add(signature.R8[0], F.e(1))), - R8y: F.toObject(signature.R8[1]), - S: signature.S, - M: F.toObject(msg)}, true); - assert(false); - } catch(err) { - assert(err.message.includes("Assert Failed")); - } - }); - - - it("Test a dissabled circuit with a bad signature", async () => { - const msg = F.e(1234); - - const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); - - const pubKey = eddsa.prv2pub(prvKey); - - - const signature = eddsa.signPoseidon(prvKey, msg); - - assert(eddsa.verifyPoseidon(msg, signature, pubKey)); - - const w = await circuit.calculateWitness({ - enabled: 0, - Ax: F.toObject(pubKey[0]), - Ay: F.toObject(pubKey[1]), - R8x: F.toObject(F.add(signature.R8[0], F.e(1))), - R8y: F.toObject(signature.R8[1]), - S: signature.S, - M: F.toObject(msg)}, true); - - await circuit.checkConstraints(w); - }); -}); diff --git a/node_modules/circomlib/test/escalarmul.js b/node_modules/circomlib/test/escalarmul.js deleted file mode 100644 index 8a65294..0000000 --- a/node_modules/circomlib/test/escalarmul.js +++ /dev/null @@ -1,121 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; -const buildBabyjub = require("circomlibjs").buildBabyjub; - -const Scalar = require("ffjavascript").Scalar; - -const assert = chai.assert; - -function print(circuit, w, s) { - console.log(s + ": " + w[circuit.getSignalIdx(s)]); -} - -describe("Exponentioation test", function () { - let babyJub; - let Fr; - this.timeout(100000); - - before( async () => { - babyJub = await buildBabyjub(); - Fr = babyJub.F; - }); - - it("Should generate the Exponentiation table in k=0", async () => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "escalarmulw4table_test.circom")); - - const w = await circuit.calculateWitness({in: 1}); - - await circuit.checkConstraints(w); - - let g = [ - Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") - ]; - - let dbl= [Fr.e("0"), Fr.e("1")]; - - const expectedOut = []; - - for (let i=0; i<16; i++) { - - expectedOut.push([Fr.toObject(dbl[0]), Fr.toObject(dbl[1])]); - dbl = babyJub.addPoint(dbl,g); - } - - await circuit.assertOut(w, {out: expectedOut}); - - }); - - it("Should generate the Exponentiation table in k=3", async () => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "escalarmulw4table_test3.circom")); - - const w = await circuit.calculateWitness({in: 1}); - - await circuit.checkConstraints(w); - - let g = [ - Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") - ]; - - for (let i=0; i<12;i++) { - g = babyJub.addPoint(g,g); - } - - let dbl= [Fr.e("0"), Fr.e("1")]; - - const expectedOut = []; - - for (let i=0; i<16; i++) { - expectedOut.push([Fr.toObject(dbl[0]), Fr.toObject(dbl[1])]); - - dbl = babyJub.addPoint(dbl,g); - } - - await circuit.assertOut(w, {out: expectedOut}); - - }); - - it("Should exponentiate g^31", async () => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "escalarmul_test.circom")); - - const w = await circuit.calculateWitness({"in": 31}); - - await circuit.checkConstraints(w); - - let g = [ - Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") - ]; - - let c = [Fr.e(0), Fr.e(1)]; - - for (let i=0; i<31;i++) { - c = babyJub.addPoint(c,g); - } - - await circuit.assertOut(w, {out: [Fr.toObject(c[0]), Fr.toObject(c[1])] }); - - const w2 = await circuit.calculateWitness({"in": Scalar.add(Scalar.shl(Scalar.e(1), 252),Scalar.e(1))}); - - c = [g[0], g[1]]; - for (let i=0; i<252;i++) { - c = babyJub.addPoint(c,c); - } - c = babyJub.addPoint(c,g); - - await circuit.assertOut(w2, {out: [Fr.toObject(c[0]), Fr.toObject(c[1])] }); - - }).timeout(10000000); - - it("Number of constrains for 256 bits", async () => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "escalarmul_test_min.circom")); - - }).timeout(10000000); - -}); diff --git a/node_modules/circomlib/test/escalarmulany.js b/node_modules/circomlib/test/escalarmulany.js deleted file mode 100644 index 7295970..0000000 --- a/node_modules/circomlib/test/escalarmulany.js +++ /dev/null @@ -1,51 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; - -const F1Field = require("ffjavascript").F1Field; -const Scalar = require("ffjavascript").Scalar; -exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); -const Fr = new F1Field(exports.p); - -function print(circuit, w, s) { - console.log(s + ": " + w[circuit.getSignalIdx(s)]); -} - -describe("Escalarmul test", function () { - let circuitEMulAny; - - this.timeout(100000); - - let g; - - before( async() => { - circuitEMulAny = await wasm_tester(path.join(__dirname, "circuits", "escalarmulany_test.circom")); - g = [ - Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") - ] - }); - - it("Should generate Same escalar mul", async () => { - - const w = await circuitEMulAny.calculateWitness({"e": 1, "p": g}); - - await circuitEMulAny.checkConstraints(w); - - await circuitEMulAny.assertOut(w, {out: g}, true); - - }); - - it("If multiply by order should return 0", async () => { - - const r = Fr.e("2736030358979909402780800718157159386076813972158567259200215660948447373041"); - const w = await circuitEMulAny.calculateWitness({"e": r, "p": g}); - - await circuitEMulAny.checkConstraints(w); - - await circuitEMulAny.assertOut(w, {out: [0,1]}, true); - - }); - -}); - diff --git a/node_modules/circomlib/test/escalarmulfix.js b/node_modules/circomlib/test/escalarmulfix.js deleted file mode 100644 index ec4d8b6..0000000 --- a/node_modules/circomlib/test/escalarmulfix.js +++ /dev/null @@ -1,95 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; -const buildBabyjub = require("circomlibjs").buildBabyjub; -const Scalar = require("ffjavascript").Scalar; - -const assert = chai.assert; - -function print(circuit, w, s) { - console.log(s + ": " + w[circuit.getSignalIdx(s)]); -} - -describe("Escalarmul test", function () { - let babyJub; - let Fr; - let circuit; - - this.timeout(100000); - - - before( async() => { - babyJub = await buildBabyjub(); - Fr = babyJub.F; - circuit = await wasm_tester(path.join(__dirname, "circuits", "escalarmulfix_test.circom")); - }); - - it("Should generate Same escalar mul", async () => { - - const w = await circuit.calculateWitness({"e": 0}); - - await circuit.checkConstraints(w); - - await circuit.assertOut(w, {out: [0,1]}, true); - - }); - - it("Should generate Same escalar mul", async () => { - - const w = await circuit.calculateWitness({"e": 1}, true); - - await circuit.checkConstraints(w); - - await circuit.assertOut(w, {out: [Fr.toObject(babyJub.Base8[0]), Fr.toObject(babyJub.Base8[1])]}); - - }); - - it("Should generate scalar mul of a specific constant", async () => { - - const s = Scalar.e("2351960337287830298912035165133676222414898052661454064215017316447594616519"); - const base8 = [ - Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") - ]; - - const w = await circuit.calculateWitness({"e": s}, true); - - await circuit.checkConstraints(w); - - const expectedRes = babyJub.mulPointEscalar(base8, s); - - await circuit.assertOut(w, {out: [Fr.toObject(expectedRes[0]), Fr.toObject(expectedRes[1])]}); - - }); - - it("Should generate scalar mul of the firsts 50 elements", async () => { - - const base8 = [ - Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") - ]; - - for (let i=0; i<50; i++) { - const s = Scalar.e(i); - - const w = await circuit.calculateWitness({"e": s}, true); - - await circuit.checkConstraints(w); - - const expectedRes = babyJub.mulPointEscalar(base8, s); - - await circuit.assertOut(w, {out: [Fr.toObject(expectedRes[0]), Fr.toObject(expectedRes[1])]}); - } - }); - - it("If multiply by order should return 0", async () => { - - const w = await circuit.calculateWitness({"e": babyJub.subOrder }, true); - - await circuit.checkConstraints(w); - - await circuit.assertOut(w, {out: [0,1]}); - }); - -}); - diff --git a/node_modules/circomlib/test/helpers/printsignal.js b/node_modules/circomlib/test/helpers/printsignal.js deleted file mode 100644 index 796274d..0000000 --- a/node_modules/circomlib/test/helpers/printsignal.js +++ /dev/null @@ -1,22 +0,0 @@ - -const snarkjs = require("snarkjs"); - -const bigInt = snarkjs.bigInt; - -module.exports = function hexBits(cir, witness, sig, nBits) { - let v = bigInt(0); - for (let i=nBits-1; i>=0; i--) { - v = v.shiftLeft(1); - const name = sig+"["+i+"]"; - const idx = cir.getSignalIdx(name); - const vbit = bigInt(witness[idx].toString()); - if (vbit.equals(bigInt(1))) { - v = v.add(bigInt(1)); - } else if (vbit.equals(bigInt(0))) { - v; - } else { - console.log("Not Binary: "+name); - } - } - return v.toString(16); -}; diff --git a/node_modules/circomlib/test/helpers/sha256.js b/node_modules/circomlib/test/helpers/sha256.js deleted file mode 100644 index ec58ee1..0000000 --- a/node_modules/circomlib/test/helpers/sha256.js +++ /dev/null @@ -1,178 +0,0 @@ -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -/* SHA-256 (FIPS 180-4) implementation in JavaScript (c) Chris Veness 2002-2017 */ -/* MIT Licence */ -/* www.movable-type.co.uk/scripts/sha256.html */ -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -'use strict'; - - -/** - * SHA-256 hash function reference implementation. - * - * This is an annotated direct implementation of FIPS 180-4, without any optimisations. It is - * intended to aid understanding of the algorithm rather than for production use. - * - * While it could be used where performance is not critical, I would recommend using the ‘Web - * Cryptography API’ (developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest) for the browser, - * or the ‘crypto’ library (nodejs.org/api/crypto.html#crypto_class_hash) in Node.js. - * - * See csrc.nist.gov/groups/ST/toolkit/secure_hashing.html - * csrc.nist.gov/groups/ST/toolkit/examples.html - */ -class Sha256 { - - /** - * Generates SHA-256 hash of string. - * - * @param {string} msg - (Unicode) string to be hashed. - * @param {Object} [options] - * @param {string} [options.msgFormat=string] - Message format: 'string' for JavaScript string - * (gets converted to UTF-8 for hashing); 'hex-bytes' for string of hex bytes ('616263' ≡ 'abc') . - * @param {string} [options.outFormat=hex] - Output format: 'hex' for string of contiguous - * hex bytes; 'hex-w' for grouping hex bytes into groups of (4 byte / 8 character) words. - * @returns {string} Hash of msg as hex character string. - */ - static hash(msg, options) { - const defaults = { msgFormat: 'string', outFormat: 'hex' }; - const opt = Object.assign(defaults, options); - - // note use throughout this routine of 'n >>> 0' to coerce Number 'n' to unsigned 32-bit integer - - switch (opt.msgFormat) { - default: // default is to convert string to UTF-8, as SHA only deals with byte-streams - case 'string': msg = utf8Encode(msg); break; - case 'hex-bytes':msg = hexBytesToString(msg); break; // mostly for running tests - } - - // constants [§4.2.2] - const K = [ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ]; - - // initial hash value [§5.3.3] - const H = [ - 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ]; - - // PREPROCESSING [§6.2.1] - - msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1] - - // convert string msg into 512-bit blocks (array of 16 32-bit integers) [§5.2.1] - const l = msg.length/4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length - const N = Math.ceil(l/16); // number of 16-integer (512-bit) blocks required to hold 'l' ints - const M = new Array(N); // message M is N×16 array of 32-bit integers - - for (let i=0; i>> 32, but since JS converts - // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators - const lenHi = ((msg.length-1)*8) / Math.pow(2, 32); - const lenLo = ((msg.length-1)*8) >>> 0; - M[N-1][14] = Math.floor(lenHi); - M[N-1][15] = lenLo; - - // HASH COMPUTATION [§6.2.2] - - for (let i=0; i>> 0; - } - - // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value - let a = H[0], b = H[1], c = H[2], d = H[3], e = H[4], f = H[5], g = H[6], h = H[7]; - - // 3 - main loop (note '>>> 0' for 'addition modulo 2^32') - for (let t=0; t<64; t++) { - const T1 = h + Sha256.Σ1(e) + Sha256.Ch(e, f, g) + K[t] + W[t]; - const T2 = Sha256.Σ0(a) + Sha256.Maj(a, b, c); - h = g; - g = f; - f = e; - e = (d + T1) >>> 0; - d = c; - c = b; - b = a; - a = (T1 + T2) >>> 0; - } - - // 4 - compute the new intermediate hash value (note '>>> 0' for 'addition modulo 2^32') - H[0] = (H[0]+a) >>> 0; - H[1] = (H[1]+b) >>> 0; - H[2] = (H[2]+c) >>> 0; - H[3] = (H[3]+d) >>> 0; - H[4] = (H[4]+e) >>> 0; - H[5] = (H[5]+f) >>> 0; - H[6] = (H[6]+g) >>> 0; - H[7] = (H[7]+h) >>> 0; - } - - // convert H0..H7 to hex strings (with leading zeros) - for (let h=0; h prev + String.fromCharCode(curr), ''); - } catch (e) { // no TextEncoder available? - return unescape(encodeURIComponent(str)); // monsur.hossa.in/2012/07/20/utf-8-in-javascript.html - } - } - - function hexBytesToString(hexStr) { // convert string of hex numbers to a string of chars (eg '616263' -> 'abc'). - const str = hexStr.replace(' ', ''); // allow space-separated groups - return str=='' ? '' : str.match(/.{2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join(''); - } - } - - - - /** - * Rotates right (circular right shift) value x by n positions [§3.2.4]. - * @private - */ - static ROTR(n, x) { - return (x >>> n) | (x << (32-n)); - } - - - /** - * Logical functions [§4.1.2]. - * @private - */ - static Σ0(x) { return Sha256.ROTR(2, x) ^ Sha256.ROTR(13, x) ^ Sha256.ROTR(22, x); } - static Σ1(x) { return Sha256.ROTR(6, x) ^ Sha256.ROTR(11, x) ^ Sha256.ROTR(25, x); } - static σ0(x) { return Sha256.ROTR(7, x) ^ Sha256.ROTR(18, x) ^ (x>>>3); } - static σ1(x) { return Sha256.ROTR(17, x) ^ Sha256.ROTR(19, x) ^ (x>>>10); } - static Ch(x, y, z) { return (x & y) ^ (~x & z); } // 'choice' - static Maj(x, y, z) { return (x & y) ^ (x & z) ^ (y & z); } // 'majority' - -} - - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - -if (typeof module != 'undefined' && module.exports) module.exports = Sha256; // ≡ export default Sha256 - diff --git a/node_modules/circomlib/test/mimccircuit.js b/node_modules/circomlib/test/mimccircuit.js deleted file mode 100644 index ed40376..0000000 --- a/node_modules/circomlib/test/mimccircuit.js +++ /dev/null @@ -1,27 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; - -const buildMimc7 = require("circomlibjs").buildMimc7; - -describe("MiMC Circuit test", function () { - let circuit; - let mimc7; - - this.timeout(100000); - - before( async () => { - mimc7 = await buildMimc7(); - circuit = await wasm_tester(path.join(__dirname, "circuits", "mimc_test.circom")); - }); - - it("Should check constrain", async () => { - const w = await circuit.calculateWitness({x_in: 1, k: 2}, true); - - const res2 = mimc7.hash(1,2,91); - - await circuit.assertOut(w, {out: mimc7.F.toObject(res2)}); - - await circuit.checkConstraints(w); - }); -}); diff --git a/node_modules/circomlib/test/mimcspongecircuit.js b/node_modules/circomlib/test/mimcspongecircuit.js deleted file mode 100644 index e3dbf63..0000000 --- a/node_modules/circomlib/test/mimcspongecircuit.js +++ /dev/null @@ -1,47 +0,0 @@ -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; - -const buildMimcSponge = require("circomlibjs").buildMimcSponge; - - -describe("MiMC Sponge Circuit test", function () { - let circuit; - let mimcSponge; - let F; - - this.timeout(100000); - - before( async () => { - mimcSponge = await buildMimcSponge(); - F = mimcSponge.F; - }); - - - it("Should check permutation", async () => { - - circuit = await wasm_tester(path.join(__dirname, "circuits", "mimc_sponge_test.circom")); - - const w = await circuit.calculateWitness({xL_in: 1, xR_in: 2, k: 3}); - - const out2 = mimcSponge.hash(1,2,3); - - await circuit.assertOut(w, {xL_out: F.toObject(out2.xL), xR_out: F.toObject(out2.xR)}); - - await circuit.checkConstraints(w); - - }); - - it("Should check hash", async () => { - circuit = await wasm_tester(path.join(__dirname, "circuits", "mimc_sponge_hash_test.circom")); - - const w = await circuit.calculateWitness({ins: [1, 2], k: 0}); - - const out2 = mimcSponge.multiHash([1,2], 0, 3); - - for (let i=0; i { - babyJub = await buildBabyjub(); - Fr = babyJub.F; - g = [ - Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") - ]; - - circuitE2M = await wasm_tester(path.join(__dirname, "circuits", "edwards2montgomery.circom")); - await circuitE2M.loadSymbols(); - circuitM2E = await wasm_tester(path.join(__dirname, "circuits", "montgomery2edwards.circom")); - await circuitM2E.loadSymbols(); - circuitMAdd = await wasm_tester(path.join(__dirname, "circuits", "montgomeryadd.circom")); - await circuitMAdd.loadSymbols(); - circuitMDouble = await wasm_tester(path.join(__dirname, "circuits", "montgomerydouble.circom")); - await circuitMDouble.loadSymbols(); - }); - - it("Convert Edwards to Montgomery and back again", async () => { - let w, xout, yout; - - w = await circuitE2M.calculateWitness({ in: [Fr.toObject(g[0]), Fr.toObject(g[1])]}, true); - - xout = w[circuitE2M.symbols["main.out[0]"].varIdx]; - yout = w[circuitE2M.symbols["main.out[1]"].varIdx]; - - mg = [xout, yout]; - - w = await circuitM2E.calculateWitness({ in: [xout, yout]}, true); - - xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; - yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; - - assert(Fr.eq(Fr.e(xout), g[0])); - assert(Fr.eq(Fr.e(yout), g[1])); - }); - it("Should double a point", async () => { - let w, xout, yout; - - g2 = babyJub.addPoint(g,g); - - w = await circuitMDouble.calculateWitness({ in: mg}, true); - - xout = w[circuitE2M.symbols["main.out[0]"].varIdx]; - yout = w[circuitE2M.symbols["main.out[1]"].varIdx]; - - mg2 = [xout, yout]; - - w = await circuitM2E.calculateWitness({ in: mg2}, true); - - xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; - yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; - - - assert(Fr.eq(Fr.e(xout), g2[0])); - assert(Fr.eq(Fr.e(yout), g2[1])); - }); - it("Should add a point", async () => { - let w, xout, yout; - - g3 = babyJub.addPoint(g,g2); - - w = await circuitMAdd.calculateWitness({ in1: mg, in2: mg2}, true); - - xout = w[circuitMAdd.symbols["main.out[0]"].varIdx]; - yout = w[circuitMAdd.symbols["main.out[1]"].varIdx]; - - mg3 = [xout, yout]; - - w = await circuitM2E.calculateWitness({ in: mg3}, true); - - xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; - yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; - - assert(Fr.eq(Fr.e(xout), g3[0])); - assert(Fr.eq(Fr.e(yout), g3[1])); - }); -}); diff --git a/node_modules/circomlib/test/multiplexer.js b/node_modules/circomlib/test/multiplexer.js deleted file mode 100644 index 945a872..0000000 --- a/node_modules/circomlib/test/multiplexer.js +++ /dev/null @@ -1,101 +0,0 @@ -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; -const F1Field = require("ffjavascript").F1Field; -const Scalar = require("ffjavascript").Scalar; -exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); -const Fr = new F1Field(exports.p); - -describe("Mux4 test", function() { - this.timeout(100000); - it("Should create a constant multiplexer 4", async () => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "mux4_1.circom")); - - const ct16 = [ - Fr.e("123"), - Fr.e("456"), - Fr.e("789"), - Fr.e("012"), - Fr.e("111"), - Fr.e("222"), - Fr.e("333"), - Fr.e("4546"), - Fr.e("134523"), - Fr.e("44356"), - Fr.e("15623"), - Fr.e("4566"), - Fr.e("1223"), - Fr.e("4546"), - Fr.e("4256"), - Fr.e("4456") - ]; - - for (let i=0; i<16; i++) { - const w = await circuit.calculateWitness({ "selector": i }, true); - - await circuit.checkConstraints(w); - - await circuit.assertOut(w, {out: ct16[i]}); - } - }); - - it("Should create a constant multiplexer 3", async () => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "mux3_1.circom")); - - const ct8 = [ - Fr.e("37"), - Fr.e("47"), - Fr.e("53"), - Fr.e("71"), - Fr.e("89"), - Fr.e("107"), - Fr.e("163"), - Fr.e("191") - ]; - - for (let i=0; i<8; i++) { - const w = await circuit.calculateWitness({ "selector": i }, true); - - await circuit.checkConstraints(w); - - await circuit.assertOut(w, {out: ct8[i]}); - } - }); - it("Should create a constant multiplexer 2", async () => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "mux2_1.circom")); - - const ct4 = [ - Fr.e("37"), - Fr.e("47"), - Fr.e("53"), - Fr.e("71"), - ]; - - for (let i=0; i<4; i++) { - const w = await circuit.calculateWitness({ "selector": i }, true); - - await circuit.checkConstraints(w); - - await circuit.assertOut(w, {out: ct4[i]}); - } - }); - it("Should create a constant multiplexer 1", async () => { - - const circuit = await wasm_tester(path.join(__dirname, "circuits", "mux1_1.circom")); - - const ct2 = [ - Fr.e("37"), - Fr.e("47"), - ]; - - for (let i=0; i<2; i++) { - const w = await circuit.calculateWitness({ "selector": i }, true); - - await circuit.checkConstraints(w); - - await circuit.assertOut(w, {out: ct2[i]}); - } - }); -}); diff --git a/node_modules/circomlib/test/pedersen.js b/node_modules/circomlib/test/pedersen.js deleted file mode 100644 index 62106f8..0000000 --- a/node_modules/circomlib/test/pedersen.js +++ /dev/null @@ -1,83 +0,0 @@ -const chai = require("chai"); -const path = require("path"); - -const Scalar = require("ffjavascript").Scalar; - -const wasm_tester = require("circom_tester").wasm; - -const buildBabyjub = require("circomlibjs").buildBabyjub; - - -describe("Double Pedersen test", function() { - let babyJub; - let Fr; - let PBASE; - let circuit; - this.timeout(100000); - before( async() => { - babyJub = await buildBabyjub(); - Fr = babyJub.F; - PBASE = - [ - [Fr.e("10457101036533406547632367118273992217979173478358440826365724437999023779287"),Fr.e("19824078218392094440610104313265183977899662750282163392862422243483260492317")], - [Fr.e("2671756056509184035029146175565761955751135805354291559563293617232983272177"),Fr.e("2663205510731142763556352975002641716101654201788071096152948830924149045094")], - [Fr.e("5802099305472655231388284418920769829666717045250560929368476121199858275951"),Fr.e("5980429700218124965372158798884772646841287887664001482443826541541529227896")], - [Fr.e("7107336197374528537877327281242680114152313102022415488494307685842428166594"),Fr.e("2857869773864086953506483169737724679646433914307247183624878062391496185654")], - [Fr.e("20265828622013100949498132415626198973119240347465898028410217039057588424236"),Fr.e("1160461593266035632937973507065134938065359936056410650153315956301179689506")] - ]; - circuit = await wasm_tester(path.join(__dirname, "circuits", "pedersen_test.circom")); - - }); - - it("Should pedersen at zero", async () => { - - let w; - - w = await circuit.calculateWitness({ in: ["0", "0"]}, true); - - await circuit.assertOut(w, {out: [0,1]}); - - }); - it("Should pedersen at one first generator", async () => { - let w; - - w = await circuit.calculateWitness({ in: ["1", "0"]}, true); - - await circuit.assertOut(w, {out: [Fr.toObject(PBASE[0][0]), Fr.toObject(PBASE[0][1])]}); - - }); - it("Should pedersen at one second generator", async () => { - let w; - - w = await circuit.calculateWitness({ in: ["0", "1"]}, true); - - await circuit.assertOut(w, {out: [Fr.toObject(PBASE[1][0]), Fr.toObject(PBASE[1][1])]}); - - }); - it("Should pedersen at mixed generators", async () => { - let w; - w = await circuit.calculateWitness({ in: ["3", "7"]}, true); - - const r = babyJub.addPoint( - babyJub.mulPointEscalar(PBASE[0], 3), - babyJub.mulPointEscalar(PBASE[1], 7) - ); - - await circuit.assertOut(w, {out: [Fr.toObject(r[0]), Fr.toObject(r[1])]}); - - }); - it("Should pedersen all ones", async () => { - let w; - - const allOnes = Scalar.sub(Scalar.shl(Scalar.e(1), 250), Scalar.e(1)); - w = await circuit.calculateWitness({ in: [allOnes, allOnes]}, true); - - - const r2 = babyJub.addPoint( - babyJub.mulPointEscalar(PBASE[0], allOnes), - babyJub.mulPointEscalar(PBASE[1], allOnes) - ); - - await circuit.assertOut(w, {out: [Fr.toObject(r2[0]), Fr.toObject(r2[1])]}); - }); -}); diff --git a/node_modules/circomlib/test/pedersen2.js b/node_modules/circomlib/test/pedersen2.js deleted file mode 100644 index bde1531..0000000 --- a/node_modules/circomlib/test/pedersen2.js +++ /dev/null @@ -1,56 +0,0 @@ -const path = require("path"); - -const Scalar = require("ffjavascript").Scalar; - -const buildPedersenHash = require("circomlibjs").buildPedersenHash; -const buildBabyJub = require("circomlibjs").buildBabyjub; - -const wasm_tester = require("circom_tester").wasm; - - -describe("Pedersen test", function() { - let babyJub - let pedersen; - let F; - let circuit; - this.timeout(100000); - before( async() => { - - babyJub = await buildBabyJub(); - F = babyJub.F; - pedersen = await buildPedersenHash(); - circuit = await wasm_tester(path.join(__dirname, "circuits", "pedersen2_test.circom")); - }); - it("Should pedersen at zero", async () => { - - let w; - - w = await circuit.calculateWitness({ in: 0}, true); - - const b = Buffer.alloc(32); - - const h = pedersen.hash(b); - const hP = babyJub.unpackPoint(h); - - await circuit.assertOut(w, {out: [F.toObject(hP[0]), F.toObject(hP[1])] }); - - }); - it("Should pedersen with 253 ones", async () => { - - let w; - - const n = F.e(Scalar.sub(Scalar.shl(Scalar.e(1), 253), Scalar.e(1))); - - w = await circuit.calculateWitness({ in: F.toObject(n)}, true); - - const b = Buffer.alloc(32); - for (let i=0; i<31; i++) b[i] = 0xFF; - b[31] = 0x1F; - - const h = pedersen.hash(b); - const hP = babyJub.unpackPoint(h); - - await circuit.assertOut(w, {out: [F.toObject(hP[0]), F.toObject(hP[1])] }); - - }); -}); diff --git a/node_modules/circomlib/test/point2bits.js b/node_modules/circomlib/test/point2bits.js deleted file mode 100644 index 98af516..0000000 --- a/node_modules/circomlib/test/point2bits.js +++ /dev/null @@ -1,30 +0,0 @@ -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; -const buildBabyJub = require("circomlibjs").buildBabyjub; - -const babyJub = require("circomlibjs").babyjub; - - -describe("Point 2 bits test", function() { - let babyJub; - let F; - let circuit; - this.timeout(100000); - before( async() => { - babyJub = await buildBabyJub(); - F = babyJub.F; - - circuit = await wasm_tester(path.join(__dirname, "circuits", "pointbits_loopback.circom")); - }); - - it("Should do the both convertions for 8Base", async () => { - const w = await circuit.calculateWitness({ in: [F.toObject(babyJub.Base8[0]), F.toObject(babyJub.Base8[1])]}, true); - - await circuit.checkConstraints(w); - }); - it("Should do the both convertions for Zero point", async () => { - const w = await circuit.calculateWitness({ in: [0, 1]}, true); - - await circuit.checkConstraints(w); - }); -}); diff --git a/node_modules/circomlib/test/poseidoncircuit.js b/node_modules/circomlib/test/poseidoncircuit.js deleted file mode 100644 index 86e14d7..0000000 --- a/node_modules/circomlib/test/poseidoncircuit.js +++ /dev/null @@ -1,80 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; - -const buildPoseidon = require("circomlibjs").buildPoseidon; - -const assert = chai.assert; - -describe("Poseidon Circuit test", function () { - let poseidon; - let F; - let circuit6; - let circuit3; - let circuitEx; - - this.timeout(1000000); - - before( async () => { - poseidon = await buildPoseidon(); - F = poseidon.F; - circuit6 = await wasm_tester(path.join(__dirname, "circuits", "poseidon6_test.circom")); - circuit3 = await wasm_tester(path.join(__dirname, "circuits", "poseidon3_test.circom")); - circuitEx = await wasm_tester(path.join(__dirname, "circuits", "poseidonex_test.circom")); - }); - - it("Should check constrain of hash([1, 2]) t=6", async () => { - const w = await circuit6.calculateWitness({inputs: [1, 2, 0,0,0]}, true); - - const res2 = poseidon([1,2,0,0,0]); - - assert(F.eq(F.e("1018317224307729531995786483840663576608797660851238720571059489595066344487"), F.e(res2))); - await circuit6.assertOut(w, {out : F.toObject(res2)}); - await circuit6.checkConstraints(w); - }); - - it("Should check constrain of hash([3, 4]) t=6", async () => { - const w = await circuit6.calculateWitness({inputs: [3, 4,5,10,23]}); - - const res2 = poseidon([3, 4,5,10,23]); - - assert(F.eq(F.e("13034429309846638789535561449942021891039729847501137143363028890275222221409"), F.e(res2))); - await circuit6.assertOut(w, {out : F.toObject(res2)}); - await circuit6.checkConstraints(w); - }); - - - it("Should check constrain of hash([1, 2]) t=3", async () => { - const w = await circuit3.calculateWitness({inputs: [1, 2]}); - - const res2 = poseidon([1,2]); - - assert(F.eq(F.e("7853200120776062878684798364095072458815029376092732009249414926327459813530"), F.e(res2))); - await circuit3.assertOut(w, {out : F.toObject(res2)}); - await circuit3.checkConstraints(w); - }); - - it("Should check constrain of hash([3, 4]) t=3", async () => { - const w = await circuit3.calculateWitness({inputs: [3, 4]}); - - const res2 = poseidon([3, 4]); - - assert(F.eq(F.e("14763215145315200506921711489642608356394854266165572616578112107564877678998"), F.e(res2))); - await circuit3.assertOut(w, {out : F.toObject(res2)}); - await circuit3.checkConstraints(w); - }); - - it("Should check constrain of hash with state and 16 ins and outs", async () => { - const ins = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] - const w = await circuitEx.calculateWitness({inputs: ins, initialState: 17}); - - const res2 = poseidon(ins, 17, 17); - const res2f = []; - for (let i=0; i> (7-j) &1)); - } - } - return res; -} - -function bitArray2buffer(a) { - const len = Math.floor((a.length -1 )/8)+1; - const b = new Buffer.alloc(len); - - for (let i=0; i { - const b = new Buffer.alloc(64); - for (let i=0; i<64; i++) { - b[i] = i+1; - } - const a = buffer2bitArray(b); - const b2 = bitArray2buffer(a); - - assert.equal(b.toString("hex"), b2.toString("hex"), true); - }); - - it("Should calculate a hash of 1 compressor", async () => { - const cir = await wasm_tester(path.join(__dirname, "circuits", "sha256_2_test.circom")); - - const witness = await cir.calculateWitness({ "a": "1", "b": "2" }, true); - - const b = new Buffer.alloc(54); - b[26] = 1; - b[53] = 2; - - const hash = crypto.createHash("sha256") - .update(b) - .digest("hex"); - const r = "0x" + hash.slice(10); - - const hash2 = sha256.hash(b.toString("hex"), {msgFormat: "hex-bytes"}); - - assert.equal(hash, hash2); - - assert(Fr.eq(witness[1], Fr.e(r))); - }).timeout(1000000); - - it("Should calculate a hash of 2 compressor", async () => { - const cir = await wasm_tester(path.join(__dirname, "circuits", "sha256_test512.circom")); - - const b = new Buffer.alloc(64); - for (let i=0; i<64; i++) { - b[i] = i+1; - } - - const hash = crypto.createHash("sha256") - .update(b) - .digest("hex"); - - const arrIn = buffer2bitArray(b); - const witness = await cir.calculateWitness({ "in": arrIn }, true); - - const arrOut = witness.slice(1, 257); - const hash2 = bitArray2buffer(arrOut).toString("hex"); - - assert.equal(hash, hash2); - - }).timeout(1000000); - it ("Should calculate a hash of 2 compressor", async () => { - const cir = await wasm_tester(path.join(__dirname, "circuits", "sha256_test448.circom")); - - const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; - - const b = Buffer.from(testStr, "utf8"); - - const hash = crypto.createHash("sha256") - .update(b) - .digest("hex"); - - const arrIn = buffer2bitArray(b); - - const witness = await cir.calculateWitness({ "in": arrIn }, true); - - const arrOut = witness.slice(1, 257); - const hash2 = bitArray2buffer(arrOut).toString("hex"); - - assert.equal(hash, hash2); - }); - -}); diff --git a/node_modules/circomlib/test/sign.js b/node_modules/circomlib/test/sign.js deleted file mode 100644 index 05c9c6a..0000000 --- a/node_modules/circomlib/test/sign.js +++ /dev/null @@ -1,82 +0,0 @@ -const path = require("path"); -const F1Field = require("ffjavascript").F1Field; -const Scalar = require("ffjavascript").Scalar; -exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); -const Fr = new F1Field(exports.p); -const wasm_tester = require("circom_tester").wasm; - -function print(circuit, w, s) { - console.log(s + ": " + w[circuit.getSignalIdx(s)]); -} - -function getBits(v, n) { - const res = []; - for (let i=0; i { - circuit = await wasm_tester(path.join(__dirname, "circuits", "sign_test.circom")); - }); - - it("Sign of 0", async () => { - const inp = getBits(Scalar.e(0), 254); - const w = await circuit.calculateWitness({in: inp}, true); - - await circuit.assertOut(w, {sign: 0}); - }); - - it("Sign of 3", async () => { - const inp = getBits(Scalar.e(3), 254); - const w = await circuit.calculateWitness({in: inp}, true); - - await circuit.assertOut(w, {sign: 0}); - }); - - it("Sign of q/2", async () => { - const inp = getBits(Scalar.shr(q, 1), 254); - const w = await circuit.calculateWitness({in: inp}, true); - - await circuit.assertOut(w, {sign: 0}); - }); - - it("Sign of q/2+1", async () => { - const inp = getBits(Scalar.add(Scalar.shr(q, 1), 1) , 254); - const w = await circuit.calculateWitness({in: inp}, true); - - await circuit.assertOut(w, {sign: 1}); - }); - - it("Sign of q-1", async () => { - const inp = getBits(Scalar.sub(q, 1), 254); - const w = await circuit.calculateWitness({in: inp}, true); - - await circuit.assertOut(w, {sign: 1}); - }); - - it("Sign of q", async () => { - const inp = getBits(q, 254); - const w = await circuit.calculateWitness({in: inp}, true); - - await circuit.assertOut(w, {sign: 1}); - }); - - it("Sign of all ones", async () => { - const inp = getBits(Scalar.sub(Scalar.shl(1,254),1), 254); - const w = await circuit.calculateWitness({in: inp}, true); - - await circuit.assertOut(w, {sign: 1}); - }); -}); diff --git a/node_modules/circomlib/test/smtprocessor.js b/node_modules/circomlib/test/smtprocessor.js deleted file mode 100644 index 1935b9e..0000000 --- a/node_modules/circomlib/test/smtprocessor.js +++ /dev/null @@ -1,219 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const wasm_tester = require("circom_tester").wasm; -const F1Field = require("ffjavascript").F1Field; -const Scalar = require("ffjavascript").Scalar; - -const newMemEmptyTrie = require("circomlibjs").newMemEmptyTrie; - -const assert = chai.assert; - -function print(circuit, w, s) { - console.log(s + ": " + w[circuit.getSignalIdx(s)]); -} - -async function testInsert(tree, _key, _value, circuit ) { - const key = tree.F.e(_key); - const value = tree.F.e(_value) - - const res = await tree.insert(key,value); - let siblings = res.siblings; - for (let i=0; i { - circuit = await wasm_tester(path.join(__dirname, "circuits", "smtprocessor10_test.circom")); - await circuit.loadSymbols(); - - tree = await newMemEmptyTrie(); - Fr = tree.F; - }); - - it("Should verify an insert to an empty tree", async () => { - const key = Fr.e(111); - const value = Fr.e(222); - - await testInsert(tree, key, value, circuit); - }); - - it("It should add another element", async () => { - const key = Fr.e(333); - const value = Fr.e(444); - - await testInsert(tree, key, value, circuit); - }); - - it("Should remove an element", async () => { - await testDelete(tree, 111, circuit); - await testDelete(tree, 333, circuit); - }); - - it("Should test convination of adding and removing 3 elements", async () => { - const keys = [Fr.e(8), Fr.e(9), Fr.e(32)]; - const values = [Fr.e(88), Fr.e(99), Fr.e(3232)]; - const tree1 = await newMemEmptyTrie(); - const tree2 = await newMemEmptyTrie(); - const tree3 = await newMemEmptyTrie(); - const tree4 = await newMemEmptyTrie(); - const tree5 = await newMemEmptyTrie(); - const tree6 = await newMemEmptyTrie(); - - await testInsert(tree1,keys[0],values[0], circuit); - await testInsert(tree1,keys[1],values[1], circuit); - await testInsert(tree1,keys[2],values[2], circuit); - - await testInsert(tree2,keys[0],values[0], circuit); - await testInsert(tree2,keys[2],values[2], circuit); - await testInsert(tree2,keys[1],values[1], circuit); - - await testInsert(tree3,keys[1],values[1], circuit); - await testInsert(tree3,keys[0],values[0], circuit); - await testInsert(tree3,keys[2],values[2], circuit); - - await testInsert(tree4,keys[1],values[1], circuit); - await testInsert(tree4,keys[2],values[2], circuit); - await testInsert(tree4,keys[0],values[0], circuit); - - await testInsert(tree5,keys[2],values[2], circuit); - await testInsert(tree5,keys[0],values[0], circuit); - await testInsert(tree5,keys[1],values[1], circuit); - - await testInsert(tree6,keys[2],values[2], circuit); - await testInsert(tree6,keys[1],values[1], circuit); - await testInsert(tree6,keys[0],values[0], circuit); - - - await testDelete(tree1, keys[0], circuit); - await testDelete(tree1, keys[1], circuit); - await testDelete(tree2, keys[1], circuit); - await testDelete(tree2, keys[0], circuit); - - await testDelete(tree3, keys[0], circuit); - await testDelete(tree3, keys[2], circuit); - await testDelete(tree4, keys[2], circuit); - await testDelete(tree4, keys[0], circuit); - - - await testDelete(tree5, keys[1], circuit); - await testDelete(tree5, keys[2], circuit); - await testDelete(tree6, keys[2], circuit); - await testDelete(tree6, keys[1], circuit); - - await testDelete(tree1, keys[2], circuit); - await testDelete(tree2, keys[2], circuit); - await testDelete(tree3, keys[1], circuit); - await testDelete(tree4, keys[1], circuit); - await testDelete(tree5, keys[0], circuit); - await testDelete(tree6, keys[0], circuit); - }); - - it("Should match a NOp with random vals", async () => { - let siblings = []; - while (siblings.length<10) siblings.push(88); - const w = await circuit.calculateWitness({ - fnc: [0,0], - oldRoot: 11, - siblings: siblings, - oldKey: 33, - oldValue: 44, - isOld0: 55, - newKey: 66, - newValue: 77 - }); - - const root1 = Fr.e(w[circuit.symbols["main.oldRoot"].varIdx]); - const root2 = Fr.e(w[circuit.symbols["main.newRoot"].varIdx]); - - await circuit.checkConstraints(w); - - assert(Fr.eq(root1, root2)); - }); - it("Should update an element", async () => { - const tree1 = await newMemEmptyTrie(); - const tree2 = await newMemEmptyTrie(); - - await testInsert(tree1,8,88, circuit); - await testInsert(tree1,9,99, circuit); - await testInsert(tree1,32,3232, circuit); - - await testInsert(tree2,8,888, circuit); - await testInsert(tree2,9,999, circuit); - await testInsert(tree2,32,323232, circuit); - - await testUpdate(tree1, 8, 888, circuit); - await testUpdate(tree1, 9, 999, circuit); - await testUpdate(tree1, 32, 323232, circuit); - }); -}); diff --git a/node_modules/circomlib/test/smtverifier.js b/node_modules/circomlib/test/smtverifier.js deleted file mode 100644 index 78528f0..0000000 --- a/node_modules/circomlib/test/smtverifier.js +++ /dev/null @@ -1,141 +0,0 @@ -const chai = require("chai"); -const path = require("path"); -const Scalar = require("ffjavascript").Scalar; -const wasm_tester = require("circom_tester").wasm; - -const newMemEmptyTrie = require("circomlibjs").newMemEmptyTrie; - -const assert = chai.assert; - -function print(circuit, w, s) { - console.log(s + ": " + w[circuit.getSignalIdx(s)]); -} - -async function testInclusion(tree, _key, circuit) { - const key = tree.F.e(_key); - const res = await tree.find(key); - - assert(res.found); - let siblings = res.siblings; - for (let i=0; i { - circuit = await wasm_tester(path.join(__dirname, "circuits", "smtverifier10_test.circom")); - - tree = await newMemEmptyTrie(); - Fr = tree.F; - await tree.insert(7,77); - await tree.insert(8,88); - await tree.insert(32,3232); - }); - - it("Check inclussion in a tree of 3", async () => { - await testInclusion(tree, 7, circuit); - await testInclusion(tree, 8, circuit); - await testInclusion(tree, 32, circuit); - }); - - it("Check exclussion in a tree of 3", async () => { - await testExclusion(tree, 0, circuit); - await testExclusion(tree, 6, circuit); - await testExclusion(tree, 9, circuit); - await testExclusion(tree, 33, circuit); - await testExclusion(tree, 31, circuit); - await testExclusion(tree, 16, circuit); - await testExclusion(tree, 64, circuit); - }); - - it("Check not enabled accepts any thing", async () => { - let siblings = []; - for (let i=0; i<10; i++) siblings.push(i); - - const w = await circuit.calculateWitness({ - enabled: 0, - fnc: 0, - root: 1, - siblings: siblings, - oldKey: 22, - oldValue: 33, - isOld0: 0, - key: 44, - value: 0 - }); - - - await circuit.checkConstraints(w); - }); - - it("Check inclussion Adria case", async () => { - const e1_hi= Fr.e("17124152697573569611556136390143205198134245887034837071647643529178599000839"); - const e1_hv= Fr.e("19650379996168153643111744440707177573540245771926102415571667548153444658179"); - - const e2ok_hi= Fr.e("16498254692537945203721083102154618658340563351558973077349594629411025251262"); - const e2ok_hv= Fr.e("19650379996168153643111744440707177573540245771926102415571667548153444658179"); - - const e2fail_hi= Fr.e("17195092312975762537892237130737365903429674363577646686847513978084990105579"); - const e2fail_hv= Fr.e("19650379996168153643111744440707177573540245771926102415571667548153444658179"); - - const tree1 = await newMemEmptyTrie(); - await tree1.insert(e1_hi,e1_hv); - await tree1.insert(e2ok_hi,e2ok_hv); - - await testInclusion(tree1, e2ok_hi, circuit); - - const tree2 = await newMemEmptyTrie(); - await tree2.insert(e1_hi,e1_hv); - await tree2.insert(e2fail_hi,e2fail_hv); - - await testInclusion(tree2, e2fail_hi, circuit); - }); - - -}); diff --git a/package-lock.json b/package-lock.json index e9c518d..6fdd88c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,13 +6,7855 @@ "": { "dependencies": { "circomlib": "^2.0.5" + }, + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "chai": "^4.5.0", + "ethers": "^6.13.5", + "hardhat": "^2.22.18" } }, - "node_modules/circomlib": { + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "license": "MPL-2.0", + "peer": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "license": "MPL-2.0", + "peer": true, + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/circomlib/-/circomlib-2.0.5.tgz", - "integrity": "sha512-O7NQ8OS+J4eshBuoy36z/TwQU0YHw8W3zxZcs4hVwpEll3e4hDm3mgkIPqItN8FDeLEKZFK3YeT/+k8TiLF3/A==", - "license": "GPL-3.0" + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nomicfoundation/edr": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.7.0.tgz", + "integrity": "sha512-+Zyu7TE47TGNcPhOfWLPA/zISs32WDMXrhSWdWYyPHDVn/Uux5TVuOeScKb0BR/R8EJ+leR8COUF/EGxvDOVKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nomicfoundation/edr-darwin-arm64": "0.7.0", + "@nomicfoundation/edr-darwin-x64": "0.7.0", + "@nomicfoundation/edr-linux-arm64-gnu": "0.7.0", + "@nomicfoundation/edr-linux-arm64-musl": "0.7.0", + "@nomicfoundation/edr-linux-x64-gnu": "0.7.0", + "@nomicfoundation/edr-linux-x64-musl": "0.7.0", + "@nomicfoundation/edr-win32-x64-msvc": "0.7.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.7.0.tgz", + "integrity": "sha512-vAH20oh4GaSB/iQFTRcoO8jLc0CLd9XuLY9I7vtcqZWAiM4U1J4Y8cu67PWmtxbvUQOqXR7S6FtAr8/AlWm14g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.7.0.tgz", + "integrity": "sha512-WHDdIrPvLlgXQr2eKypBM5xOZAwdxhDAEQIvEMQL8tEEm2qYW2bliUlssBPrs8E3bdivFbe1HizImslMAfU3+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.7.0.tgz", + "integrity": "sha512-WXpJB54ukz1no7gxCPXVEw9pgl/9UZ/WO3l1ctyv/T7vOygjqA4SUd6kppTs6MNXAuTiisPtvJ/fmvHiMBLrsw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.7.0.tgz", + "integrity": "sha512-1iZYOcEgc+zJI7JQrlAFziuy9sBz1WgnIx3HIIu0J7lBRZ/AXeHHgATb+4InqxtEx9O3W8A0s7f11SyFqJL4Aw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.7.0.tgz", + "integrity": "sha512-wSjC94WcR5MM8sg9w3OsAmT6+bbmChJw6uJKoXR3qscps/jdhjzJWzfgT0XGRq3XMUfimyafW2RWOyfX3ouhrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.7.0.tgz", + "integrity": "sha512-Us22+AZ7wkG1mZwxqE4S4ZcuwkEA5VrUiBOJSvKHGOgy6vFvB/Euh5Lkp4GovwjrtiXuvyGO2UmtkzymZKDxZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.7.0.tgz", + "integrity": "sha512-HAry0heTsWkzReVtjHwoIq3BgFCvXpVhJ5qPmTnegZGsr/KxqvMmHyDMifzKao4bycU8yrpTSyOiAJt27RWjzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nomicfoundation/ethereumjs-util": "9.0.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "dev": true, + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", + "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", + "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } + } + }, + "node_modules/@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz", + "integrity": "sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "chai": "^4.2.0", + "ethers": "^6.1.0", + "hardhat": "^2.9.4" + } + }, + "node_modules/@nomicfoundation/hardhat-ethers": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.8.tgz", + "integrity": "sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "ethers": "^6.1.0", + "hardhat": "^2.0.0" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.9.tgz", + "integrity": "sha512-lSWqhaDOBt6gsqMadkRLvH6HdoFV1v8/bx7z+12cghaOloVwwn48CPoTH2iXXnkqilPGw8rdH5eVTE6UM+2v6Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nomicfoundation/ignition-core": "^0.15.9", + "@nomicfoundation/ignition-ui": "^0.15.9", + "chalk": "^4.0.0", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "json5": "^2.2.3", + "prompts": "^2.4.2" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-verify": "^2.0.1", + "hardhat": "^2.18.0" + } + }, + "node_modules/@nomicfoundation/hardhat-ignition-ethers": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.9.tgz", + "integrity": "sha512-9PwwgLv3z2ec3B26mK0IjiFezHFFBcBcs1qKaRu8SanARE4b7RvrfiLIy8ZXE7HaxgPt32kSsQzehhzAwAIj1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.4", + "@nomicfoundation/hardhat-ignition": "^0.15.9", + "@nomicfoundation/ignition-core": "^0.15.9", + "ethers": "^6.7.0", + "hardhat": "^2.18.0" + } + }, + "node_modules/@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.12.tgz", + "integrity": "sha512-xTNQNI/9xkHvjmCJnJOTyqDSl8uq1rKb2WOVmixQxFtRd7Oa3ecO8zM0cyC2YmOK+jHB9WPZ+F/ijkHg1CoORA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ethereumjs-util": "^7.1.4" + }, + "peerDependencies": { + "hardhat": "^2.9.5" + } + }, + "node_modules/@nomicfoundation/hardhat-toolbox": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-5.0.0.tgz", + "integrity": "sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-ignition-ethers": "^0.15.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.0", + "@typechain/ethers-v6": "^0.5.0", + "@typechain/hardhat": "^9.0.0", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": ">=18.0.0", + "chai": "^4.2.0", + "ethers": "^6.4.0", + "hardhat": "^2.11.0", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.1", + "ts-node": ">=8.0.0", + "typechain": "^8.3.0", + "typescript": ">=4.5.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.12.tgz", + "integrity": "sha512-Lg3Nu7DCXASQRVI/YysjuAX2z8jwOCbS0w5tz2HalWGSTZThqA0v9N0v0psHbKNqzPJa8bNOeapIVSziyJTnAg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "debug": "^4.1.1", + "lodash.clonedeep": "^4.5.0", + "picocolors": "^1.1.0", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.4" + } + }, + "node_modules/@nomicfoundation/ignition-core": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.9.tgz", + "integrity": "sha512-X8W+7UP/UQPorpHUnGvA1OdsEr/edGi8tDpNwEqzaLm83FMZVbRWdOsr3vNICHN2XMzNY/xIm18Cx7xGKL2PQw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/address": "5.6.1", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "cbor": "^9.0.0", + "debug": "^4.3.2", + "ethers": "^6.7.0", + "fs-extra": "^10.0.0", + "immer": "10.0.2", + "lodash": "4.17.21", + "ndjson": "2.0.0" + } + }, + "node_modules/@nomicfoundation/ignition-core/node_modules/@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" + } + }, + "node_modules/@nomicfoundation/ignition-core/node_modules/cbor": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@nomicfoundation/ignition-ui": { + "version": "0.15.9", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.9.tgz", + "integrity": "sha512-8lzbT7gpJ5PoowPQDQilkwdyqBviUKDMoHp/5rhgnwG1bDslnCS+Lxuo6s9R2akWu9LtEL14dNyqQb6WsURTag==", + "dev": true, + "peer": true + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz", + "integrity": "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz", + "integrity": "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz", + "integrity": "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz", + "integrity": "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz", + "integrity": "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz", + "integrity": "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz", + "integrity": "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz", + "integrity": "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.2", + "typescript": ">=4.7.0" + } + }, + "node_modules/@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fs-extra": "^9.1.0" + }, + "peerDependencies": { + "@typechain/ethers-v6": "^0.5.1", + "ethers": "^6.1.0", + "hardhat": "^2.9.9", + "typechain": "^8.3.2" + } + }, + "node_modules/@typechain/hardhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/node": { + "version": "22.13.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", + "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/qs": { + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, + "license": "BSD-3-Clause OR MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", + "dev": true, + "license": "WTFPL", + "peer": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cipher-base": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/circomlib": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/circomlib/-/circomlib-2.0.5.tgz", + "integrity": "sha512-O7NQ8OS+J4eshBuoy36z/TwQU0YHw8W3zxZcs4hVwpEll3e4hDm3mgkIPqItN8FDeLEKZFK3YeT/+k8TiLF3/A==", + "license": "GPL-3.0" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/command-line-usage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/command-line-usage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", + "dev": true, + "peer": true + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "peer": true, + "dependencies": { + "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.12.0" + }, + "optionalDependencies": { + "source-map": "~0.2.0" + } + }, + "node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eth-gas-reporter": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "peerDependencies": { + "@codechecks/client": "^0.1.0" + }, + "peerDependenciesMeta": { + "@codechecks/client": { + "optional": true + } + } + }, + "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "peer": true + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "^1.4.0" + } + }, + "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "deprecated": "This library has been deprecated and usage is discouraged.", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "license": "MPL-2.0", + "peer": true, + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethers": { + "version": "6.13.5", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.5.tgz", + "integrity": "sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/ethers/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/fastq": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + }, + "bin": { + "testrpc-sc": "index.js" + } + }, + "node_modules/ghost-testrpc/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ghost-testrpc/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ghost-testrpc/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ghost-testrpc/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/globby/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globby/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hardhat": { + "version": "2.22.18", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.18.tgz", + "integrity": "sha512-2+kUz39gvMo56s75cfLBhiFedkQf+gXdrwCcz4R/5wW0oBdwiyfj2q9BIkMoaA0WIGYYMU2I1Cc4ucTunhfjzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/edr": "^0.7.0", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "boxen": "^5.1.2", + "chokidar": "^4.0.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^5.0.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "json-stream-stringify": "^3.1.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "picocolors": "^1.1.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.8.26", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.6", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/hardhat-gas-reporter": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz", + "integrity": "sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + }, + "peerDependencies": { + "hardhat": "^2.0.2" + } + }, + "node_modules/hardhat/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/hardhat/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/hardhat/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/hardhat/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/hardhat/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/hardhat/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", + "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/json-stream-stringify": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", + "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=7.10.1" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonschema": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz", + "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/mocha/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ndjson": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", + "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "json-stringify-safe": "^5.0.1", + "minimist": "^1.2.5", + "readable-stream": "^3.6.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "ndjson": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz", + "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true, + "peer": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", + "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "peer": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/recursive-readdir/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "req-from": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "istanbul": "lib/cli.js" + } + }, + "node_modules/sc-istanbul/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/sc-istanbul/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/sc-istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sc-istanbul/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sc-istanbul/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sc-istanbul/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/sc-istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true, + "license": "MIT" + }, + "node_modules/secp256k1": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/secp256k1/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/secp256k1/node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/secp256k1/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shelljs/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/shelljs/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/solc": { + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz", + "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "command-exists": "^1.2.8", + "commander": "^8.1.0", + "follow-redirects": "^1.12.1", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solc.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solidity-coverage": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.14.tgz", + "integrity": "sha512-ItAAObe5GaEOp20kXC2BZRnph+9P7Rtoqg2mQc2SXGEHgSDF2wWd1Wxz3ntzQWXkbCtIIGdJT918HG00cObwbA==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.19.0", + "chalk": "^2.4.2", + "death": "^1.1.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.21", + "mocha": "^10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "bin": { + "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" + } + }, + "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.19.0.tgz", + "integrity": "sha512-RV16k/qIxW/wWc+mLzV3ARyKUaMUTBy9tOLMzFhtNSKYeTAanQ3a5MudJKf/8arIFnA2L27SNjarQKmFg0w/jA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/solidity-coverage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/solidity-coverage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/solidity-coverage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/solidity-coverage/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/solidity-coverage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solidity-coverage/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/solidity-coverage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "license": "WTFPL OR MIT", + "peer": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.2.tgz", + "integrity": "sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/typechain/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typechain/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typechain/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/typechain/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typechain/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "peer": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici": { + "version": "5.28.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", + "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/web3-utils": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", + "dev": true, + "license": "LGPL-3.0", + "peer": true, + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 277ca4b..4736b7e 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,11 @@ { "dependencies": { "circomlib": "^2.0.5" + }, + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "chai": "^4.5.0", + "ethers": "^6.13.5", + "hardhat": "^2.22.18" } } diff --git a/contracts/READEME.me b/scripts/deploy.js similarity index 100% rename from contracts/READEME.me rename to scripts/deploy.js diff --git a/test/Lock.js b/test/Lock.js new file mode 100644 index 0000000..f0e6ba1 --- /dev/null +++ b/test/Lock.js @@ -0,0 +1,126 @@ +const { + time, + loadFixture, +} = require("@nomicfoundation/hardhat-toolbox/network-helpers"); +const { anyValue } = require("@nomicfoundation/hardhat-chai-matchers/withArgs"); +const { expect } = require("chai"); + +describe("Lock", function () { + // We define a fixture to reuse the same setup in every test. + // We use loadFixture to run this setup once, snapshot that state, + // and reset Hardhat Network to that snapshot in every test. + async function deployOneYearLockFixture() { + const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60; + const ONE_GWEI = 1_000_000_000; + + const lockedAmount = ONE_GWEI; + const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS; + + // Contracts are deployed using the first signer/account by default + const [owner, otherAccount] = await ethers.getSigners(); + + const Lock = await ethers.getContractFactory("Lock"); + const lock = await Lock.deploy(unlockTime, { value: lockedAmount }); + + return { lock, unlockTime, lockedAmount, owner, otherAccount }; + } + + describe("Deployment", function () { + it("Should set the right unlockTime", async function () { + const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture); + + expect(await lock.unlockTime()).to.equal(unlockTime); + }); + + it("Should set the right owner", async function () { + const { lock, owner } = await loadFixture(deployOneYearLockFixture); + + expect(await lock.owner()).to.equal(owner.address); + }); + + it("Should receive and store the funds to lock", async function () { + const { lock, lockedAmount } = await loadFixture( + deployOneYearLockFixture + ); + + expect(await ethers.provider.getBalance(lock.target)).to.equal( + lockedAmount + ); + }); + + it("Should fail if the unlockTime is not in the future", async function () { + // We don't use the fixture here because we want a different deployment + const latestTime = await time.latest(); + const Lock = await ethers.getContractFactory("Lock"); + await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith( + "Unlock time should be in the future" + ); + }); + }); + + describe("Withdrawals", function () { + describe("Validations", function () { + it("Should revert with the right error if called too soon", async function () { + const { lock } = await loadFixture(deployOneYearLockFixture); + + await expect(lock.withdraw()).to.be.revertedWith( + "You can't withdraw yet" + ); + }); + + it("Should revert with the right error if called from another account", async function () { + const { lock, unlockTime, otherAccount } = await loadFixture( + deployOneYearLockFixture + ); + + // We can increase the time in Hardhat Network + await time.increaseTo(unlockTime); + + // We use lock.connect() to send a transaction from another account + await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith( + "You aren't the owner" + ); + }); + + it("Shouldn't fail if the unlockTime has arrived and the owner calls it", async function () { + const { lock, unlockTime } = await loadFixture( + deployOneYearLockFixture + ); + + // Transactions are sent using the first signer by default + await time.increaseTo(unlockTime); + + await expect(lock.withdraw()).not.to.be.reverted; + }); + }); + + describe("Events", function () { + it("Should emit an event on withdrawals", async function () { + const { lock, unlockTime, lockedAmount } = await loadFixture( + deployOneYearLockFixture + ); + + await time.increaseTo(unlockTime); + + await expect(lock.withdraw()) + .to.emit(lock, "Withdrawal") + .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg + }); + }); + + describe("Transfers", function () { + it("Should transfer the funds to the owner", async function () { + const { lock, unlockTime, lockedAmount, owner } = await loadFixture( + deployOneYearLockFixture + ); + + await time.increaseTo(unlockTime); + + await expect(lock.withdraw()).to.changeEtherBalances( + [owner, lock], + [lockedAmount, -lockedAmount] + ); + }); + }); + }); +}); diff --git a/test/testament.test.js b/test/testament.test.js new file mode 100644 index 0000000..3f40da9 --- /dev/null +++ b/test/testament.test.js @@ -0,0 +1,60 @@ +const { expect } = require("chai"); +const { ethers } = require("hardhat"); + +describe("Testament Contract", function () { + let Testament, testament, owner, lawyer, heir1, heir2; + + beforeEach(async function () { + [owner, lawyer, heir1, heir2] = await ethers.getSigners(); + + Testament = await ethers.getContractFactory("Testament"); + testament = await Testament.deploy(); + await testament.waitForDeployment(); + + console.log(`Testament deployed at: ${testament.target}`); + }); + + it("Treba da kreira testament sa advokatom", async function () { + await testament.connect(owner).createTestament(lawyer.address); + expect(await testament.testamentCount()).to.equal(1); + }); + + it("Treba da doda naslednika", async function () { + await testament.connect(owner).createTestament(lawyer.address); + await testament.connect(owner).addHeir(1, heir1.address, 50, "test-hash"); + + const heirs = await testament.getHeirs(1); + expect(heirs.length).to.equal(1); + }); + + it("Samo advokat može aktivirati testament", async function () { + await testament.connect(owner).createTestament(lawyer.address); + + await expect( + testament.connect(owner).activateTestament(1) + ).to.be.revertedWith("Only assigned lawyer can activate the testament"); + + await testament.connect(lawyer).activateTestament(1); + const testData = await testament.testaments(1); + expect(testData.isActive).to.equal(true); + }); + + it("Naslednik može da vidi svoje nasledstvo pre aktivacije", async function () { + await testament.connect(owner).createTestament(lawyer.address); + await testament.connect(owner).addHeir(1, heir1.address, 50, "test-hash"); + + const [percentage, documentHash] = await testament.connect(heir1).viewInheritance(1); + expect(percentage).to.equal(50); + expect(documentHash).to.equal("test-hash"); + }); + + it("Naslednik prima imovinu tek nakon aktivacije testamenta", async function () { + await testament.connect(owner).createTestament(lawyer.address); + await testament.connect(owner).addHeir(1, heir1.address, 50, "test-hash"); + await testament.connect(lawyer).activateTestament(1); + + await expect( + testament.connect(heir1).claimInheritance(1) + ).to.emit(testament, "InheritanceClaimed").withArgs(1, heir1.address, 50); + }); +}); \ No newline at end of file diff --git a/todo.txt b/todo.txt index 07742ca..55bc134 100644 --- a/todo.txt +++ b/todo.txt @@ -29,26 +29,26 @@ pub struct Heir { address: Address, percentage: u64, - assets: Vec, // Lista nasledstva (npr. "Kuća u Beogradu", "BMW X5") document_hash: String, // IPFS ili Arweave hash testamenta(al cemo ipak hakovati sistem i napraviti json fajlove) } -flow - -korsinik unosi svoje podatke iz pasosa - -moze da napravi testament ili da procita ako ima neki za njega - -citanje testamenta - -vadimo iz "Baze podataka-foldera" fajl koji ce iz json u pdf i da se prikaze na frontu - -a u samom jasonu ili ti testametnu imamo deo gde je hesh svi podataka iz pasosa i adrese i on jedini ima pristup - -pravljenja testamenta - -on mora unosese podatke naslednika(pasos i adresa) koji se hesira - -mora da upise sta nasledjuje svaki naslenik posebno i to se generise u posebne json fajlove koji se upisuju u nasu bazu - -procent novca iz svog valeta - -podaci sta ostalo dobija - -unese podatke advokata koji ce odradi approve da je umro - -advokat - -unosi svoje podatke za verfikaciju i hash mrtvog coveka ili glavnog testamenta - -i on moze da odradi approve da je covek rip i onda aktivira testament + -connect wallet + -korsinik unosi svoje podatke iz pasosa + -moze da napravi testament ili da procita ako ima neki za njega + -citanje testamenta + -vadimo iz "Baze podataka-foldera" fajl koji ce iz json u pdf i da se prikaze na frontu + -a u samom jasonu ili ti testametnu imamo deo gde je hesh svi podataka iz pasosa i adrese i on jedini ima pristup + -pravljenja testamenta + -on mora unosese podatke naslednika(pasos i adresa) koji se hesira + -mora da upise sta nasledjuje svaki naslenik posebno i to se generise u posebne json fajlove koji se upisuju u nasu bazu + -procent novca iz svog valeta + -podaci sta ostalo dobija + -unese podatke advokata koji ce odradi approve da je umro + -advokat + -unosi svoje podatke za verfikaciju i hash mrtvog coveka ili glavnog testamenta + -i on moze da odradi approve da je covek rip i onda aktivira testament @@ -62,6 +62,8 @@ -ai za predlog oko raspodele testamenta i support -kada se akrivira testament, dobije se obavestenje na mejl -dodati vise advokata + -da li moze odmah da vidi testamen ili tek kada se realizuje + zk-inheritance/ @@ -88,15 +90,9 @@ zk-inheritance/ │ ├── next.config.js # ⚙️ Konfiguracija za Next.js │ ├── tsconfig.json # 🛠️ TypeScript podešavanja │ -│── contracts/ # 📌 Rust smart contract (Arbitrum Stylus) -│ ├── src/ -│ │ ├── lib.rs # 📜 Glavni pametni ugovor -│ │ ├── types.rs # 🏗️ Strukture podataka (Testament, Heir) -│ │ ├── utils.rs # 🛠️ Pomoćne funkcije -│ │ ├── zk_verify.rs # 🔐 Modul za integraciju zkVerify -│ │ ├── tests.rs # ✅ Testovi za ugovor -│ ├── Cargo.toml # 📦 Rust zavisnosti (Stylus SDK, zkVerify) -│ ├── build.rs # 🏗️ Skripta za kompajliranje ugovora +│── contracts/ # 📌 Solidity pametni ugovor (za Arbitrum) +│ ├── Testament.sol # 📜 Glavni pametni ugovor +│ ├── Migrations.sol # 🔄 Za deployment ugovora │ │── circuits/ # 📌 Circom fajlovi za zkProof │ ├── hashers.circom # 🔐 Heširanje podataka @@ -118,7 +114,7 @@ zk-inheritance/ │ │ ├── 0xHeir2.json # 📜 Drugi naslednik │ │── scripts/ # 📌 Skripte za deployment & testiranje -│ ├── deploy_contract.ts # 🚀 Deploy Rust smart contracta +│ ├── deploy_contract.ts # 🚀 Deploy smart contracta │ ├── generate_testament.ts # 🏗️ Generisanje JSON fajla za testament │ ├── hash_testament.ts # 🔐 Generisanje SHA-256 hash-a │ ├── convert_json_to_pdf.ts # 📄 Konverzija JSON-a u PDF